gpt4 book ai didi

java - 使用 Spring Data/JPA/Hibernate 和分离实体测试保存调用

转载 作者:太空宇宙 更新时间:2023-11-04 14:34:27 24 4
gpt4 key购买 nike

我有一个 Java 应用程序,它使用 Spring Data(带有 JPA 和 Hibernate)通过服务层和存储库层与数据库进行交互。大部分工作正常,但我在测试组合对象的保存调用时遇到问题:

涉及三个对象:

  • 从数据库获取的对象 A
  • 对象 B 我在测试中创建了一个新实例
  • 我想要将对象 C 保存到与对象 A 具有多对一关系并与对象 B(以及附加到其上的两者的实例)具有一对一关系的数据库

(级联设置为合并并保留)

现在,当尝试使用对象 C 的服务来保存它时,我收到分离实体异常。当将 @Transactional 放在测试方法之上时,我无法检查数据库的状态,因为事务仍然处于打开状态。 (将对象的检索和创建 + 保存调用放在带有 @Transactional 的单独方法中根本没有执行任何操作。尝试获取实体管理器并刷新它也没有帮助。)

我确信这可能是一个常见问题(或者只是我这边的误解),但我还没有找到任何解决方案,并且希望得到任何建议。

正在使用的版本:

  • Spring 4.0.5
  • JPA 2.1
  • hibernate 4.3.5

最佳答案

你必须先持久化对象B或者将cascade属性添加到关系注释中,例如

@OneToMany(cascade = CascadeType.ALL, mappedBy = "field")

这将通过关系级联所有操作。

关于java - 使用 Spring Data/JPA/Hibernate 和分离实体测试保存调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25764823/

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