春季数据jpa并非选择所有记录

时间:2018-07-04 21:34:01

标签: java hibernate jpa spring-data-jpa hql

我是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未映射”。

1 个答案:

答案 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")