hibernate3报错: could not resolve property

山里小龙 2009-07-06 12:42:04
求高手修改我的HQL语句。(SSH2/hibernate3)

我的HQL语句如下:
String hql = "From Question AS q WHERE q.qid IN(SELECT a.qid FROM Answer AS a WHERE a.userid=?)";

报错信息:org.hibernate.QueryException: could not resolve property: qid of: org.lxh.myzngt.vo.Answer [From org.lxh.myzngt.vo.Question AS q WHERE q.qid IN(SELECT a.qid FROM org.lxh.myzngt.vo.Answer AS a WHERE a.userid=?)]


表结构:表Answer 中有外键:qid 对应到表Question 中的q.id.

Question.hbm.xml:

<class name="org.lxh.myzngt.vo.Question" table="question" >
<id name="qid" type="java.lang.Integer">
<column name="qid" />
<generator class="native"></generator>
</id>
<set name="answers" inverse="true">
<key>
<column name="qid" />
</key>
<one-to-many class="org.lxh.myzngt.vo.Answer" />
</set>
</class>

Answer.hbm.xml:

<class name="org.lxh.myzngt.vo.Answer" table="answer" catalog="mldn">
<id name="aid" type="java.lang.Integer">
<column name="aid" />
<generator class="native"></generator>
</id>
<many-to-one name="question" class="org.lxh.myzngt.vo.Question" fetch="select">
<column name="qid" />
</many-to-one>
</class>


Question.java:

public class Question {
private int qid;
private Set answers;
public int getQid() {
return qid;
}
public void setQid(int qid) {
this.qid = qid;
}
public Set getAnswers() {
return answers;
}
public void setAnswers(Set answers) {
this.answers = answers;
}
}

Answer.java:

public class Answer {
private int aid;
private int qid;
private Question question;

public Question getQuestion() {
return question;
}
public void setQuestion(Question question) {
this.question = question;
}
public int getAid() {
return aid;
}
public void setAid(int aid) {
this.aid = aid;
}
public int getQid() {
return qid;
}
public void setQid(int qid) {
this.qid = qid;
}


}
...全文
569 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
山里小龙 2009-07-06
  • 打赏
  • 举报
回复

改成“a.question.qid ”后就可以了,高手就是高手呀。这个问题昨天晚上把我整得半死,想不到加一个单词就可以了。唉,没基础呀。大虾可否介绍本关于hibernate 的书?
老紫竹 2009-07-06
  • 打赏
  • 举报
回复
还有,既然是 manytoone的关系,你应该使用

(SELECT a.question.qid FROM Answer AS a




老紫竹 2009-07-06
  • 打赏
  • 举报
回复
(SELECT a.qid FROM Answer AS a

你的Answer里面明明是 aid, 怎么出来了 qid
sangshusen_1988 2009-07-06
  • 打赏
  • 举报
回复
2楼正解

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧