0
我有兩個JPA實體(帳戶和人),具有雙向關係:JPA級聯堅持多對一
@Entity
@Table(name = "ACCOUNTS")
@DataCache(enabled = false)
public class Account
{
....
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "ID_OWNER", nullable = false)
private Person owner;
...
}
@Entity
@Table(name = "OWNERS")
@DataCache(enabled = false)
public class Person {
...
@Column(name = "HAS_ACCOUNTS", nullable = false, columnDefinition = "CHAR(1)")
private char hasAccounts;
@OneToMany(mappedBy = "owner")
private Set<Accpunt> comments = new LinkedHashSet<Account>(3);
...
}
當我堅持的人,我不想堅持所有帳戶,但是當我堅持一個帳戶,我想更新人物財產hasAccounts,所以我需要也更新人。
我提出以下步驟:
- 創建人
- 堅持的人
- 創建一個帳戶
- 修改所有者(以前創建的
- 堅持帳戶(和我希望它自動合併人)
Person p = new Person();
em.persist(p);
Account a = new Account();
a.setOwner(p);
p.setHasAccounts('Y');
em.persist(a);
,我得到這個異常:
javax.ejb.EJBTransactionRolledbackException: org.hibernate.PersistentObjectException: detached entity passed to persist: Person
(我使用JPA 1.0與Hibernate)。
JPA1.2不存在。 JPA 1.0? JPA 2.0? – DataNucleus
對不起,我的錯。 JPA 1.0是我使用的版本。 (我在考慮JSF 1.2) –