我有一个包含多对一关系的JPA持久化对象模型:Account
有许多Transactions
.Transaction
等于Account
.
下面是一段代码:
@Entity
public class Transaction {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne(cascade = {CascadeType.ALL},fetch= FetchType.EAGER)
private Account fromAccount;
....
@Entity
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(cascade = {CascadeType.ALL},fetch= FetchType.EAGER, mappedBy = "fromAccount")
private Set<Transaction> transactions;
我能够创建一个Account
对象,向其中添加事务,并正确保存Account
对象.但是,当我创建一个事务using an existing already persisted Account并持久化the Transaction时,我得到一个例外:
原因:org.冬眠PersistentObjectException:传递给persist:com的分离实体.保尔桑瓦尔德.账户
因此,我可以持久化包含事务的Account
,但不能持久化包含Account
的事务.我以为这是因为可能没有附加Account
,但是这段代码仍然给了我相同的例外:
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);
如何正确保存与已持久化的Account
对象关联的Transaction
?