我是Hibernate的初学者,我不想弄清楚一些机制。 我有实体:
@Entity
@Table(name = "dish")
public class Dish implements Serializable {
@ManyToMany(fetch = FetchType.LAZY)
private List<Ingredient> ingredients;
@ManyToOne(fetch = FetchType.LAZY)
private Category category;
}
以及具有这种方法的存储库:
@Query("select d from Dish d join fetch d.ingredients")
Set<Dish> getDishesWithIngredientsAndCategory();
我注意到,我正在通过此方法仅检索具有相关成分的菜肴。我什至不知道如何获取所有的所有菜肴? 第二个问题是:是否可以在一个@Query中组合以获取两列?像这样:
@Query("select d from Dish d join fetch d.ingredients, d.category")
我尝试使用此类查询,但收到 QuerySelectionException :“ d.category未映射”。
答案 0 :(得分:1)
我仅通过此方法检索已关联的菜式 配料。
使用Left Join
代替加入:@Query("select d from Dish d left join fetch d.ingredients")
第二个问题是:是否可以合并为一个@Query fetch 两列? 您可以尝试以下方法:
@Query("select d from Dish d join fetch d.ingredients join fetch d.category")