bugfix> hibernate > 投稿

私は 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);

このメソッドは、カテゴリーがヌルの製品を返しません。 productCategory にnullがあっても製品を取得する方法カラム。

回答 1 件
  • 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"
    
    

あなたの答え