Ho un modello a oggetti persistente JPA che contiene una relazione molti-a-uno: uno ne Accountha molti Transactions. A ne Transactionha uno Account.
Ecco uno snippet del codice:
@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;
Sono in grado di creare un Accountoggetto, aggiungere transazioni ad esso e persistere Accountcorrettamente l' oggetto. Ma, quando creo una transazione, usando un Conto già persistente esistente e persistendo la Transazione , ottengo un'eccezione:
Causato da: org.hibernate.PersistentObjectException: entità distaccata passata a persistere: com.paulsanwald.Account su org.hibernate.event.internal.DefaultPersistEventListener.onPersist (DefaultPersistEventListener.java:141)
Quindi, sono in grado di persistere in un file Accountcontenente transazioni, ma non in una Transazione con un Account. Pensavo che ciò fosse dovuto al fatto che Accountpotrebbe non essere allegato, ma questo codice mi dà ancora la stessa eccezione:
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);
Come posso salvare correttamente un Transaction, associato a un Accountoggetto già persistente ?