JPA - 如何在 ManyToOne 关系之前检查条件
JPA - How to check a conditional before in a ManyToOneRelationship
我有 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
您必须使用查询
select c from Car c where c.person.address is not null
@Where 注释(顺便说一句,这是 Hibernate 专有的,而不是 JPA 注释)用于集合以过滤内容。
我有 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
您必须使用查询
select c from Car c where c.person.address is not null
@Where 注释(顺便说一句,这是 Hibernate 专有的,而不是 JPA 注释)用于集合以过滤内容。