JPA - 如何在多对一关系中检查条件

Posted

技术标签:

【中文标题】JPA - 如何在多对一关系中检查条件【英文标题】:JPA - How to check a conditional before in a ManyToOneRelationship 【发布时间】:2022-01-23 20:52:03 【问题描述】:

我有 2 个实体,CarPerson。一个人可以有多辆车。所以我有

@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 - 如何在多对一关系中检查条件的主要内容,如果未能解决你的问题,请参考以下文章