为了账号安全,请及时绑定邮箱和手机立即绑定

使用 CriteriaBuilder 获取数据的问题

使用 CriteriaBuilder 获取数据的问题

眼眸繁星 2021-11-03 14:33:35
ContactInfo 类的数据库中有一个表。现在我想找到customerId = id 和 isDeleted = false 的值 private EntityManager entityManager; public ContactInfo findById(long id) {    CriteriaBuilder builder = entityManager.getCriteriaBuilder();    CriteriaQuery<ContactInfo> criteria = builder.createQuery( ContactInfo.class );    Root<ContactInfo> root = criteria.from(ContactInfo.class);    criteria.select(root).where(            builder.equal(root.get("customerId"), id),            builder.equal(root.get("isDeleted"), false)    );    return entityManager.createQuery(criteria).getSingleResult();}联系信息类:public class ContactInfo extends BaseInfo {    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private Long cntId;    @Column(columnDefinition="TEXT",length=4000)    private String data;    @OneToOne(fetch = FetchType.LAZY)    @JoinColumn(name="customer_id")    private PersonalInfo customer;    public ContactInfo(){ }    public ContactInfo(Long id) {        this.cntId = id;    }}个人信息类:public class PersonalInfo extends BaseInfo {    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private Long customerId;//    private Long cardId;//}基础信息类:abstract public class BaseInfo {    @CreatedDate    private Date createdDate;    @CreatedBy    private String createdBy;    @LastModifiedDate    private Date modifiedDate;    @LastModifiedBy    private String modifiedBy;    @Column(columnDefinition = "boolean default false", nullable = false)    private boolean isDeleted;}如何绕过以下错误。提前致谢。 错误
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您的customerId存在于PersonalInfo实体中,因此您的条件查询应如下所示。


criteria.select(root).where(

    builder.equal(root.get("customer").get("customerId"), id)

);

请试试这个。


我希望这能解决你的问题。


查看完整回答
反对 回复 2021-11-03
  • 1 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信