PersistentObjectException: отдельный объект, переданный для сохранения, созданный JPA и HibernateJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 PersistentObjectException: отдельный объект, переданный для сохранения, созданный JPA и Hibernate

Сообщение Anonymous »

У меня есть объектная модель, сохраняемая в 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;
Я могу создать объект «Учетная запись», добавлять к нему транзакции и правильно сохранять объект «Учетная запись». Но когда я создаю транзакцию, используя существующую, уже сохраненную учетную запись, и сохраняю транзакцию, я получаю исключение:


Вызвано: org.hibernate.PersistentObjectException: отдельный объект передан для сохранения: com.paulsanwald.Account
в 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);
Как правильно сохранить транзакцию, связанную с уже сохраненным объектом учетной записи?

Подробнее здесь: https://stackoverflow.com/questions/133 ... -jpa-and-h
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»