是否可以使用外键值在JPA 2中创建条件查询?

时间:2014-10-02 13:28:53

标签: java jpa-2.0 criteriaquery

假设我有两个由一对多关系连接的表

public class Slave
{
   @Id
   @Column(name = "id")
   long id;

   @JoinColumn(name = "master", referencedColumnName = "id")
   Master master;
}

public class Master
{
   @Id
   @Column(name = "id")
   long id;

   @OneToMany(mappedBy = "master", targetEntity = Slave.class)
   Collection<Slave> slaves;
}

是否可以创建CriteriaQuery来选择具有已知ID的所有Master of Slaves? 要像这样生成SQL:

SELECT * FROM slave s WHERE s.master=XXX;

应该{​​{1}}不仅仅是&#34;原生查询&#34;像这样

CriteriaQuery

提前谢谢

1 个答案:

答案 0 :(得分:0)

我找到了一些解决方法。不确定它是否是JPA2规范的一部分但是对于hibernate,我能够将另一个属性映射到与Long相同的DB列。我只需要使用insertable=false, updatable=false

将其设为只读
public class Slave
{
   @Id
   @Column(name = "id")
   long id;

   @Column(name = "master", insertable=false, updatable=false)
   long masterId;
   @JoinColumn(name = "master", referencedColumnName = "id")
   Master master;
}

然后我刚刚使用此属性创建了CriteriaQuery