Reg*_*ser 3 java spring jpa spring-data-jpa spring-boot
像/sf/answers/898026881/和/sf/answers/2252893051/这样的答案以及许多其他人提到了一些enitityManager.getReference()方法,可以用来避免对数据库进行不必要的选择查询.
我在 spring boot 应用程序中遇到了类似的问题,当尝试将对象保存到数据库时,使用CRUDRepository. 我的班级看起来像,
class StudentSubject {
String studentId;
@ManyToOne
private Subject subject;
@ManyToOne
private Student student;
}
Run Code Online (Sandbox Code Playgroud)
我必须不必要地find()调用从数据库中获取学生和主题对象,只是将它们传递StudentSubjectRepository给save()他们。但是我已经有了主题和学生的主键。所以我想改用它们,entityManager看起来像我需要的。
但是我不知道这个 entityManager 来自哪里,或者在 Spring Boot 中是否有任何等效的东西。
它是正常注入的,Spring Boot 与它无关(Spring Boot 只是 Spring,尽管有一些配置差异)。
只需添加
@PersistenceContext
private EntityManager em;
Run Code Online (Sandbox Code Playgroud)
到您的班级,您可以访问原始EntityManager对象及其提供的所有内容。使用它没有什么问题,你不能用存储库完成所有事情。