簡體   English   中英

JPA使用它的id來保存“new”實體並參考現有實體?

[英]JPA save “new” Entity with reference to an existing Entity using only it's id?

假設你有一輛帶有輪胎系列的汽車。

@Entity
public class Car {
    private Long id;
    @OneToMany(mappedBy = "car")
    private Set<Tire> tires = new HashSet<>();
}

@Entity
public class Tire {
    private Long id;
    ...
}

現在,如果您想要添加新車並添加現有輪胎,您可以獲取整個現有輪胎實體以填充Car's Set。

是否可以簡單地使用一些輪胎ID並保存汽車而不首先將整個輪胎實體提取到內存中? 有沒有辦法用Tire Id保存它,如果它只是一個單輪胎實例而不是一個Set? 使用JPA和Criteria API,或者可能是JPQL。

您可以使用id通過EntityManager.getReference加載代理“代理”對象。 除非您訪問該對象的任何屬性,否則它不會發出任何數據庫查詢。

如果您訪問屬性,則延遲加載機制將啟動並加載實際對象。 以下問題演示了代理對象的解剖。 有助於獲得更好的圖片

暫無
暫無

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

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