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);

Как правильно сохранить Транзакцию, связанную с уже сохраненным объектом Аккаунта?

Ответы на вопрос(13)

Ваш ответ на вопрос