具有两个表,例如Employee和Address实体。我需要按地址实体国家/地区名称排序。我用过的“ address.country”之类的
国家的名字。但是在Employee表中删除空地址行。需要保留address_pk为null的行以及基于国家/地区名称排序的行
@Entity
@Table(name = "employee")
public class Employee {
private Address address;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "address_pk", nullable = true)
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
答案 0 :(得分:0)
如果您使用像这样的JPA默认方法:
employeeRepository.findAll(sort);
然后,自动生成的查询将使用inner-join。因此,所有员工没有地址引用的行都将从结果中排除。
您必须创建一个自定义查询,例如:
@Query(value="select e from Employee e LEFT JOIN e.address a ORDER BY a.country");
Page<Employee> findAllSorted();