JPA @ManyToOne получить строку, даже если внешний атрибут не ссылается на какую-либо внешнюю строку - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть атрибут Customer в Sale классе:

@ManyToOne
@JoinColumn(name = "customer_id")
@NotFound(action = NotFoundAction.IGNORE)
private Customer customer;

Проблема в том, что если customer_id не ссылается на какого-либо клиента (например, после его удаления), строка продажине вернулся.Кажется, что атрибут Customer блокирует получение строки продажи, если он не ссылается на какого-либо клиента в таблице Customer.

Как получить строку продажи, даже если customer_id не ссылается на какого-либо клиента.

1 Ответ

0 голосов
/ 28 декабря 2018

Обнаружена проблема: я получаю Sale записи вроде следующего:

@Query("SELECT s from Sale s where cast(s.id as string) like :x or s.invoiceNumber like :x or s.customer.name like :x or s.paymentMethod like :x or s.note like :x or s.invoiceNumber like :x")
    public Page<Sale> search(@Param("x") String keyword, Pageable pageable);

Проблема в том, что в запросе есть s.customer.name like :x, но я должен добавить LEFT JOIN s.customer кзапрос.Вот правильный окончательный HQL: SELECT s from Sale s left join s.customer where cast(s.id as string) like :x or s.invoiceNumber like :x or s.customer.name like :x or s.paymentMethod like :x or s.note like :x or s.invoiceNumber like :x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...