繁体   English   中英

使用 JPA 标准 API 为外键创建查询

[英]Create query with JPA Criteria API for foreign key

这是我想使用条件查询重写的查询:

Query query = entityManager.createQuery( "Select a from UserDetails a where a.user.id = ?1")

我怎样才能做到这一点? 当我知道我正在寻找的实体的某些属性时,我知道如何使用标准查询执行 select,但在这种情况下,我想使用外键执行 select。 我有两个实体:

@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 在 userdetails 中做 select。 我该怎么做?

我已经这样解决了:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM