是否可以使用外键值在JPA2中创建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奴隶?生成这样的SQL:

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

它应该是CriteriaQuery,而不仅仅是像这样的"本地查询"

_entityManager.createNativeQuery( "SELECT s FROM master s WHERE s.master = ?1" );
query.setParameter( 1, XXX );

提前感谢

我找到了一些变通方法。不确定它是否是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

相关内容

  • 没有找到相关文章

最新更新