JPA - 如何在多对一关系中检查条件
Posted
技术标签:
【中文标题】JPA - 如何在多对一关系中检查条件【英文标题】:JPA - How to check a conditional before in a ManyToOneRelationship 【发布时间】:2022-01-23 20:52:03 【问题描述】:我有 2 个实体,Car
和 Person
。一个人可以有多辆车。所以我有
@Entity
@NoArgsConstructor
@Getter
@Table(name="Car")
public class Car
@Id
private String id;
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "person_id")
private Person person;
@Entity
@NoArgsConstructor
@Getter
@Table(name="Person")
public class Person
@Id
private String id;
private String name;
private String address;
但是,我只想加载车主设置了地址的汽车(因此它不为空)。
我已经尝试添加
@Where(clause = "address IS NOT NULL")
但无济于事。
要将其转换为 SQL 术语,我需要将查询
SELECT * FROM car c JOIN person p ON c.person_id = p.id WHERE p.address IS NOT NULL
【问题讨论】:
【参考方案1】:你必须使用查询
select c from Car c where c.person.address is not null
@Where 注释(顺便说一句。这是 Hibernate 专有的,而不是 JPA 注释)用于集合过滤内容。
【讨论】:
以上是关于JPA - 如何在多对一关系中检查条件的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 EntityType 在与同一实体(父)的多对一关系中显示当前对象?
在多对一中使用 Spring Data JPA 保持错误关系