Jpa查询正确加入

时间:2015-07-21 13:52:36

标签: java mysql hibernate jpa

我在JPA中遇到此查询的问题:

String query= "SELECT pc.pcKey, c.id, c.pcName 
    FROM Computer c RIGHT JOIN c.pcKey pc ON c.pcKey = pc.pcKey 
    WHERE pc.pcKey IS NOT NULL AND pc.pk.idLaboratory = :laboratoryId";

这是我收到的错误消息:

with clause can only reference columns in the driving table [SELECT pc.pcKey, c.id, c.pcName FROM com.want.ecdlejb.hibernate.model.Computer c RIGHT JOIN c.pcKey pc ON c.pcKey = pc.pcKey WHERE pc.pcKey IS NOT NULL AND pc.pk.idLaboratory = :laboratoryId]
at org.hibernate.hql.internal.ast.HqlSqlWalker$WithClauseVisitor.visit(HqlSqlWalker.java:508)

实体计算机课

@ManyToOne
@JoinColumn(name="pc_key", nullable=false)
private PcKey pcKey;

实体PcKey类

@OneToMany(mappedBy="pcKey")
private Set<Computer> computerses;

我读到了这个错误的一些错误,但它是在2012年,我认为他们已经解决了。任何人都知道如何正确地进行此查询?

1 个答案:

答案 0 :(得分:2)

尝试JPQL查询:

String query= " SELECT pcKey, c.id, c.pcName 
    FROM Computer c RIGHT JOIN Pckey pcKey 
    WHERE pcKey.id IS NOT NULL AND pcKey.idLaboratory = :laboratoryId"; 
相关问题