当前位置: 首页 > 知识库问答 >
问题:

持续分离对象出错"在同步期间,通过未标记级联PERSIST的关系找到了一个新对象"

邓声
2023-03-14

在同步过程中,我发现了一个错误,通过一个未标记为cascade PERSIST:Wallet的关系找到了一个新对象
我知道错误通常是由于您没有级联类型。坚持,不要具体地坚持那个实体,但我的故事可能会有所不同,因为我坚持了那个实体。

我在一个交易中创建用户,然后将用户传递给一个新的交易,在这个交易中,钱包被创建并连接到用户
退出createUser功能时出错
虽然我知道将托管对象传递给新事务并在那里进行更改是个坏主意,但我希望代码在Spring上下文中能够正常工作。但我不确定它为什么会在J2EE中抛出错误。

我还发现,在退出createUser

  1. 再次合并钱包,以便再次管理对象,或

如果有人能告诉我J2EE和Spring之间的区别,这段代码在前一段代码中不起作用,我将不胜感激。

// existing transaction 
public void createUser(){
        User user = userRepo.createUser();
        walletService.createAndAttachWalletToUser(user);
        // add to fix
        // user.setWallet(walletService.merge(user.getWallet())); OR
        // user.setWallet(walletService.getWallet(user.getWallet().getId()));
}

// WalletService class
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void createAndAttachWalletToUser(User user){
        Wallet wallet = walletRepo.createWallet();
        user.setWallet(wallet);
}

共有1个答案

龙凯
2023-03-14

这个问题已经有一段时间没有答案了,所以在这里张贴漫游:

在退出createUser

再次合并钱包以便再次管理对象,或者再次从DB获取新创建的钱包并将其附加到用户。因此,当退出createUser时,它知道wallet不是一个新实体,但已经存在。

 类似资料:
  • 我有两个2类的关系多对多。 我想用这种方式创建一个新的recipie: 如果数据库中不存在成分,则会出现如下错误 有没有办法自动添加表中创建的对象? 我尝试添加CascateType. PERSIST但它也不工作

  • 在试图获得文章和之间的关系时,我可能没有完全正确的映射,导致: 文章: 海德菲尔德: 实体已经更新,以反映使用的建议,这似乎可以修复特定的错误消息。我正在努力生成一个更有用的日志来跟踪发生的事情。

  • 这是我的第一篇帖子,如果我有任何错误,请原谅我。 当我想查询(添加,编辑,删除)数据库时,我得到一个错误java.lang.IllegalStateExctive:在同步期间,通过未标记为级联PERSIST的关系找到了一个新对象。 相关表格包括赞助商和捐款。它们之间存在一对多的关系。以下课程:赞助商 捐款:

  • 我有两个JPA实体(账户和个人),具有双向关系: 当我持久化一个人时,我不想持久化所有帐户,但当我持久一个帐户时,我想更新Person属性hasAccounts,因此我还需要更新这个人。 我做了以下步骤: 创建人员 坚持该人 创建帐户 修改所有者(以前创建的 持久帐户(我希望它会自动合并该人) 我得到了这个例外: (我用JPA 1.0配合Hibernate)。

  • 问题内容: 我有以下两个实体: 1-播放列表: *保存或更新播放列表实体时,需要使用 *CascadeType.ALL 来保存和更新PlaylistadMap集合。 orphanRemoval = true :在删除播放列表实体时需要,PlaylistadMap引用也应删除。 2- PlaylistadMap: 使用我删除播放列表时,出现以下异常: 请告知如何解决此异常。 问题答案: 将 Fetc

  • 问题内容: 我收到上述错误“ org.hibernate.ObjectDeletedException:被删除的对象将通过级联重新保存(从关联中删除已删除的对象):”。有人可以帮我这个问题是什么,应该怎么解决? 谢谢。 问题答案: 没有映射结束代码会有点困难…这通常是由于要删除与集合关联的对象引起的。 您必须从拥有的收藏夹中删除对象,然后再删除对象 但是您可以通过这种方式使用deleteOrpha