Возвращать данные, даже если внешний ключ в HQL пуст - PullRequest
0 голосов
/ 25 мая 2018

У меня есть таблица Product, которая соединяет таблицу ProductCategory с отношениями @ManyToOne и @OneToMany.Product:

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "category_id")
@NotFound(action=NotFoundAction.IGNORE)
private ProductCategory productCategory;

Category:

@OneToMany(fetch = FetchType.LAZY, mappedBy="productCategory" ,cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
@JsonBackReference
@OrderBy("id desc")
private Set<Product> products = new HashSet<Product>(); 

У меня есть этот метод хранилища, который извлекает данные из Product таблицы:

@Query("SELECT p from Product p where cast(p.id as string) like :x or p.name like :x or p.description like :x or p.sku like :x or p.productCategory.name like :x")
public Page<Product> search(@Param("x") String keyword, Pageable pageable);

ThisМетод не возвращает продукты, где их категории являются нулевыми.Как получить продукты, даже если у меня есть ноль в столбце productCategory.

1 Ответ

0 голосов
/ 25 мая 2018

Я решил проблему с добавлением (действительно) LEFT JOIN к запросу:

"SELECT p from Product p left join p.productCategory where cast(p.id as string) like :x or p.name like :x or p.description like :x or p.sku like :x or p.productCategory.name like :x"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...