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 transactions;
Я могу создать объект Account, добавить к нему транзакции и правильно сохранить объект Account. Но когда я создаю транзакцию,используя существующую уже сохраненную учетную записьи сохраняяпереводЯ получаю исключение:
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);
Как правильно сохранить Транзакцию, связанную с уже сохраненным объектом Аккаунта?