簡體   English   中英

如何使用spring JPA查詢列表元素

[英]How to query list elements using spring JPA

背景:沙拉含有多種蔬菜。 讓我們假設沙拉的配方是按照給定的順序添加蔬菜,因此訂單也需要堅持

這是類定義

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>
  1. 我正在使用List,因為蔬菜的序列必須保留
  2. 在保存沙拉時,蔬菜桌中已經存在成分蔬菜

目標:創建一個JPQ查詢以獲取給定沙拉所涉及的所有蔬菜的列表

我嘗試了什么? 1)

SELECT v FROM SALAD.veggies v where v.salad_id = :salad_id

這沒用。 如何查詢沒有類的表(如List和Map?變量)

嘗試這個:

SELECT v FROM Salad s JOIN s.veggies v where s.id = :salad_id

請記住:在JPQL中,您使用的是Java字段,而不是列名。 此外,還沒有從Vegetable實體到Salad實體的關系。

你甚至可以說

select v from Vegetable v where v.salad_id = :saladId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM