gpt4 book ai didi

java - 在不知道父对象的情况下使用 JPA 保存对象

转载 作者:行者123 更新时间:2023-12-01 23:11:47 28 4
gpt4 key购买 nike

我的 JPA 存储库中有 2 个实体:学生和教师。当我使用 find 方法找到学生时,我希望相应的老师也被填充。但是,当我保存 Student 对象时,我只有相应的teacher_id,而没有整个相应的 Teacher 对象。我可以使用 teacher_id 执行 findById,但事实证明这样做成本高昂,因为我有许多 Student 对象需要保存,并且每次保存都会导致 2 个 DB 调用。

@ManyToOne
@JoinColumn(name="teacher_id")
private Teacher teacher;

最佳答案

正如评论所示,我会选择进行新的调用并加载整个教师实体,将其分配给学生实体,然后保存它。如果您有业务限制(例如每位教师最多可容纳多少学生),您可能会需要此功能。

话虽如此,为了回答您的问题,您可以使用自定义插入 @Query 向 JpaRepository 添加新方法。与此处解释的内容类似:

https://www.baeldung.com/jpa-insert

与此类似的东西:

@Transactional
public void insertWithTeacherId(Student student, long teacher_id) {
entityManager.createNativeQuery("INSERT INTO student (id, teacher_id) VALUES (?,?)")
.setParameter(1, student.getId())
.setParameter(2, teacher_id)
.executeUpdate();
}

关于java - 在不知道父对象的情况下使用 JPA 保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58372580/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com