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;
}
}