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)
);
请试试这个。
我希望这能解决你的问题。
添加回答
举报
0/150
提交
取消