gpt4 book ai didi

java - 如果我只是添加一个新的子对象 java hibernate spring ,可以保存父对象吗?

转载 作者:行者123 更新时间:2023-12-02 12:43:44 25 4
gpt4 key购买 nike

使用 Hibernate 和 Java Spring,我有两个数据库表:Projects 和 ProjectNotes。项目可以有很多注释。

@Entity
@Table(name="projects")
public class Project {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@OneToMany(mappedBy="project", cascade=CascadeType.ALL)
private List<ProjectNote> projectNotes;
}

我想向项目添加新注释。显然我可以做到这一点。

    Project project = projectRepository.findOne(id);
ProjectNote pn = new ProjectNote();
pn.setText("Hello");
pn.setProject(project);
project.getProjectNotes().add(pn);
projectRepository.save(project);

并且它有效。这与使用笔记存储库有什么不同

    Project project = projectRepository.findOne(id);
ProjectNote pn = new ProjectNote();
pn.setText("Hello");
pn.setProject(project);
projectNotesRepository.save(pn);

哪个比另一个更有效或更正确?

编辑:另一个想法。我还在项目中使用@LastModifiedBy/Date。我想第一种方法会改变项目的lastModified信息,而第二种方法不会。不过我没试过!

最佳答案

在双向映射中,应用程序应保持值同步,这意味着如果您调用 bar.setProject(foo) 该方法应调用 foo.getNotes() .add(this),使操作对称。

如果您在 Hibernate 上启用查询日志记录,您将看到最终结果是相同的。当然,最后修改日期也会在这两种情况下更新。

以下是关于双向关联复杂性的一些额外注意事项(以及您可能希望避免它们的原因):What is the difference between Unidirectional and Bidirectional associations?

关于java - 如果我只是添加一个新的子对象 java hibernate spring ,可以保存父对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44854924/

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