上下文 沙拉含有多种蔬菜。让我们假设沙拉的配方是按照给定的顺序添加蔬菜,因此订单也需要保留
以下是类定义
public class Salad {
private String name;
private String description;
private List<Vegetable> veggies = new ArrayList<Vegetable>();
//setters and getters
}
public class Vegetable {
private String name;
private String description;
//setters and getters
}
这是hibernate-mapping.xml
<hibernate-mapping>
<class name="Salad" table="SALAD">
<id name="id">
<generator class="sequence"/>
</id>
<property name="name"/>
<property name="description"/>
<list name=veggies cascade="all-delete-orphan" table="SALAD_VEGGIES" lazy="false">
<key column="salad_id" />
<list-index column="idx" />
<many-to-many column="veg_id" class="Vegetable" />
</list>
</class>
<class name="Vegetable" table="VEGETABLE">
<id name="id">
<generator class="sequence"/>
</id>
<property name="name"/>
<property name="description"/>
</class>
</hibernate-mapping>
目的: 创建一个JPQ查询以获取给定沙拉所涉及的所有蔬菜的列表
我尝试了什么? 1)
SELECT v FROM SALAD.veggies v where v.salad_id = :salad_id
哪个不起作用。如何查询没有类的表(如List和Map?变量)
答案 0 :(得分:2)
试试这个:
SELECT v FROM Salad s JOIN s.veggies v where s.id = :salad_id
请记住:在JPQL中,您使用的是Java字段,而不是列名。此外,Vegetable
实体与Salad
实体之间没有关系。
答案 1 :(得分:0)
你甚至可以说
select v from Vegetable v where v.salad_id = :saladId