Sto utilizzando Hibernate 3.3.1 e vorrei creare una relazione tra persone e un'azienda assegnata. Dovrebbero essere accoppiati liberamente, ma mi piacerebbe organizzare per creare una società via cascata e non chiamare esplicitamente saveOrUpdate (newCompany).Hibernate @ManyToOne funziona solo con CascadeType.ALL
ho definito le seguenti entità:
class Company
{
@Id
Long companyId;
String name;
}
class Person
{
@Id
Long personId;
String name;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE})
Company company;
}
dentro la mia dao che sto facendo la seguente:
testpers.setCompany (newCompany);
session.saveOrUpdate(testpers);
e ottengo un'eccezione
org.hibernate.TransientObjectException: l'oggetto fa riferimento a un'istanza transitoria non salvata - salva l'istanza transitoria prima dello svuotamento: consearch.model.core.Company
Quando indicandoli con "cascade = CascadeType.ALL" Funziona, ma io non voglio anche ccade Soppressione (per esempio se una società viene rimossa, la persona non deve essere rimossa)
Mi chiedevo che nessuno avesse avuto questo problema prima di Grazie in anticipo per avermi aiutato. Shane
Questo era esattamente la risposta giusta, dopo aver aggiunto l'annotazione @Cascade , ha funzionato come previsto! molte grazie! – Shannon
Benvenuti in SO. Se una delle risposte seguenti risolve il problema, devi accettarlo (fai clic sul segno di spunta accanto alla risposta appropriata). Questo fa due cose. Permette a tutti di sapere che il tuo problema è stato risolto, e dà la persona che ti aiuta ad accreditare l'assistenza. Vedi [here] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) per una spiegazione completa –
@bellabax Come sei arrivato con questa soluzione? È descritto nella documentazione di ibernazione? Potresti per favore indicare un riferimento in cui questo problema è descritto in dettaglio, specialmente perché questo sta accadendo? Ho trovato questo http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/ ma non è molto est da capire senza guardare la fonte di ibernazione. – jhegedus