这是我想要使用条件查询重写的查询:
Query query = entityManager.createQuery( "Select a from UserDetails a where a.user.id = ?1")
我怎样才能做到这一点?当我知道我正在寻找的实体的某些属性时,我知道如何使用条件查询进行选择,但在这种情况下,我想使用外键进行选择。我有两个实体:
@Entity
@Table(name = "user")
public class User {
private String name;
@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private UserDetails userdetails;
etc.
}
@Entity
@Table( name = "userdetails")
public class UserDetails
{
@OneToOne( cascade = { CascadeType.MERGE, CascadeType.PERSIST}, fetch = FetchType.LAZY)
@JoinColumn( name = "fk_user_id")
private User user;
etc.
}
我只知道用户的 id,现在我想使用此用户 ID 在用户详细信息中进行选择。我该怎么做?
我是这样解决的:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<UserDetails > cq = cb.createQuery( UserDetails .class);
Root<UserDetails > root = cq.from( UserDetails .class);
cq.select(root);
cq.where(cb.equal( root.get("user").get("id"), userID));
return entityManager.createQuery(cq).getSingleResult;