我在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年,我认为他们已经解决了。任何人都知道如何正确地进行此查询?
答案 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";