Spring JPA Data ManyToOne сортировка столбцов с атрибутом дочернего enitity, а также допускает нулевое значение - PullRequest
0 голосов
/ 27 февраля 2019

Наличие двух таблиц, например, Employee и Address entity.Мне нужно отсортировать по адресу название страны, где находится субъект.Я использовал как "address.country", которые сортируют по
названию страны.Но удаление пустых адресных строк в таблице Employee.Необходимо сохранить строки с нулевым address_pk, а также отсортированные строки на основе названия страны

@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;
    }
}

1 Ответ

0 голосов
/ 27 февраля 2019

Если вы используете методы 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();
...