jpa持久化嵌套java对象_JPA/Hibernate:传递给持久化的分离实体

JPA/Hibernate:传递给持久化的分离实体

我有一个JPA持久化的对象模型,它包含一个多对一的关系:一个帐户有许多事务。交易只有一个帐户。

下面是代码片段:@Entitypublic class Transaction {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@ManyToOne(cascade = {CascadeType.ALL},fetch= FetchType.EAGER)

private Account fromAccount;....@Entitypublic class Account {

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

private Long id;

@OneToMany(cascade = {CascadeType.ALL},fetch= FetchType.EAGER, mappedBy = "fromAccount")

private Set transactions;

我能够创建一个帐户对象,向它添加事务,并正确地持久化帐户对象。但是,当我创建一个交易时,使用现有的已持久化帐户,并坚持交易我有个例外:Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.paulsanwald.Account

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:141)

因此,我能够持久化一个包含事务的帐户,而不是一个有帐户的事务。我认为这是因为帐户可能没有附加,但这段代码仍然给了我同样的例外:if (account.getId()!=null) {

account = entityManager.merge(account);}Transaction transaction = new Transaction(account,"other stuff");

// the below fails with a "detached entity" message. why?entityManager.persist(transaction);

如何正确保存与已持久化帐户对象关联的事务?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值