我被困在這個Hibernate的東西,不知道如何弄清楚。請幫忙 !使用HQL從聯合表中選擇它們之間具有一對多關係
所以,我有這兩個表:
POSITION
positionid(PK), description
JOB
jobid(PK),positionid(FK),description
如何使用HQL在Hibernate中與它們對應的位置說明,以獲取所有的工作?
編輯:所以這就是我想實現:
JOBID POSITION.DESCRPTION JOB.DESCRIPTION
1 Teacher Science Teacher
2 Coach Football Coach
等所有工作在JOB表。我正在試圖弄清楚這將是什麼HQL。
我已經把下面的代碼至今:
position.hbm.xml
<hibernate-mapping>
<class name="com.XXXX.model.Position" table="POSITION">
<id name="positionID" type="int" column="POSITIONID" >
<generator class="assigned"/>
</id>
<property name="description">
<column name="DESCRIPTION" />
</property>
<set name="jobs">
<key column="positionID" />
<one-to-many class="com.XXXX.model.Job" />
</set>
</class>
</hibernate-mapping>
job.hbm.xml
<hibernate-mapping>
<class name="com.XXXX.model.Job" table="JOB">
<id name="jobID" type="int" column="JOBID" >
<generator class="assigned"/>
</id>
<property name="description">
<column name="DESCRIPTION" />
</property>
<many-to-one name="position" class="com.XXXX.model.Position" column="positionID" />
</class>
</hibernate-mapping>
Position.java
public class Position {
private int positionID;
private String description;
private Set<Job> jobs = new HashSet<Job>();
// Getters and Setters for all the above three follows...
}
Job.java
public class Job {
private int jobID;
private String description;
private Position position;
// Getters and Setters for all the above three follows...
}
在我的代碼,現在我用
session.createQuery("from Position as p left join p.positionID as pid").list();
我知道它不是完全正確,我得到如下錯誤:
java.lang.NullPointerException
at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:317)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3268)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3060)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2938)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
.........................
...........................
有人能告訴我如何解決此問題,請?
連接用於導航兩個實體之間的關聯。你的查詢沒有意義。你真的想實現什麼?你說你希望所有的工作都有他們的職位描述,但是你的代碼表明你想要一個'List'。 –
您好,我理解這種混淆,我試着用上面引用的查詢,甚至不確定這是否正確。我現在已經更新了我真正想要實現的問題。 –