2016-02-27 74 views
0

我在Hibernate(5.1)上,我需要將元素添加到符合條件的所有實體上的集合字段,而無需全部獲取它們。JPA將元素添加到使用CriteriaUpdate的集合

@Entity 
public class Order { 

    @Id 
    public Long id; 

    public Date placedOn; 

    @ManyToMany 
    public List<Item> items; 

} 

我需要添加一個新的Item同一實例的所有Order S置於一個特定日期之後。我需要使用Criteria API,而不是JPQL。

這可能嗎?我找不到這方面的文檔。

P.S.訂單/商品的情況只是一個例子,我正在尋找一種廣義的方法,我還需要調整它以從集合中移除項目。

回答

0

你不能使用CriteriaUpdate來做到這一點,因爲它不是一個更新,而是許多插入,因爲你有一個ManyToMany關係在數據庫中的關係表上進行中繼。

因此,您必須查詢所有訂單,然後添加將生成插入語句的項目。

+0

我很害怕這個。我知道它不是SQL UPDATE,但我認爲JPA有某種JPQL UPDATE Order o INSERT:item INTO o.items和它的相對Criteria方法。由於在他們的發作版中,JPA實現在更新集合字段時執行這些'INSERT',我希望他們也提供了讓用戶以編程方式執行這些操作的方法... –

+0

不,它不能這樣做。因爲你不能在一個SQL語句中這樣做。 –

+0

JPA沒有神奇,它只是另一種查詢語言,最終轉換爲SQL –

相關問題