JPA - 如何在 ManyToOne 关系之前检查条件

JPA - How to check a conditional before in a ManyToOneRelationship

我有 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

您必须使用查询

select c from Car c where c.person.address is not null

@Where 注释(顺便说一句,这是 Hibernate 专有的,而不是 JPA 注释)用于集合以过滤内容。