相关疑难解决方法(0)

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

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

这是代码的片段:

@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;
Run Code Online (Sandbox Code Playgroud)

我能够创建一个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);
Run Code Online (Sandbox Code Playgroud)

因此,我能够持久保存包含交易的账户,但不能持有具有账户的交易.我认为这是因为帐户可能没有附加,但这段代码仍然给了我同样的例外:

@Entity
public class Transaction {
    @Id …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

211
推荐指数
12
解决办法
37万
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1