![](/img/trans.png)
[英]When to use EntityManager.find() vs EntityManager.getReference() with JPA
[英]How do I use JPA's entityManager.getReference in Spring Boot?
像https://stackoverflow.com/a/12828955/3395716和https://stackoverflow.com/a/32184186/3395716之類的答案,以及其他許多答案都提到了一些enitityManager.getReference()
方法,該方法可用來避免不必要的使用選擇查詢數據庫。
在嘗試使用CRUDRepository
將對象保存到數據庫時,Spring Boot應用程序中出現類似問題。 我的課看起來像
class StudentSubject {
String studentId;
@ManyToOne
private Subject subject;
@ManyToOne
private Student student;
}
我不必不必要地執行find()
調用即可從數據庫中獲取學生和主題對象,而只需將它們傳遞給StudentSubjectRepository
即可save()
它們。 但是我已經有了主題和學生的主鍵。 因此,我想改用它們,而entityManager
看起來像我所需要的。
但是我不知道這個entityManager的來源,或者在Spring Boot中是否有任何等同的實體。
如果您使用JpaRepository接口,為您的存儲庫,而不是CRUDRepository
,你將有機會獲得getOne(id)
方法,它是相當於entityManager.getReference
。
它是正常注入的,與Spring Boot無關(Spring Boot只是Spring,盡管有一些配置差異)。
只需添加
@PersistenceContext
private EntityManager em;
您的類,您可以訪問原始EntityManager
對象及其提供的所有內容。 使用它沒有錯,您無法使用存儲庫完成所有操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.