创建了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;
}
然后我使用这个属性