Java 是否可以使用外键值在JPA2中创建criteriaquery?
假设我有两个由一对多关系连接的表Java 是否可以使用外键值在JPA2中创建criteriaquery?,java,jpa-2.0,criteriaquery,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(mapped
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,而不仅仅是像这样的本机查询
_entityManager.createNativeQuery( "SELECT s FROM master s WHERE s.master = ?1" );
query.setParameter( 1, XXX );
提前谢谢你我找到了一些解决办法。不确定它是否是JPA2规范的一部分,但是对于hibernate,我能够将另一个属性映射到相同的DB列。我只需要使用insertable=false、updateable=false将其设置为只读 然后我使用这个属性创建了CriteriaQuery只是一个注释,如果您更改了master属性,masterId不会立即更改,您需要持久化实体并从EntityManager刷新它。。。
_entityManager.createNativeQuery( "SELECT s FROM master s WHERE s.master = ?1" );
query.setParameter( 1, XXX );
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;
}