Io uso Spring e Hibernate 3.2.3 4.2.3 e JDK 7.oggetto fa riferimento a un'istanza transiente non salvato: come per irrigare o restituire oggetto salvato
Ho una semplice entità:
@Entity
public class Language {
@Id
@GeneratedValue
private long id;
@Column(nullable = false, length = 3, unique = true)
private String code;
}
I salvata un'istanza di questa entità utilizzando una classe annotata @Service
con un metodo annotato @Transactional
che utilizza un DAO che salva l'entità con
sessionFactory.getCurrentSession().save(object);
Dopo che uso d la salvatiLanguage
entità per la creazione EntityX
, che ha utilizzato in un rapporto ManyToOne
...
lang=new Language();
// ...
languageService.saveLanguage(lang);
e=new EntityX();
// ...
e.setLanguage(lang);
otherService.saveEntity(e);
e EntityX
è definito come ...
@Entity
public class EntityX {
@ManyToOne
@JoinColumn(nullable = false)
private Language language;
// ...
}
ho sempre arrivare eccezione
Exception in thread "main" org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: somepackage.Language
Provo ad utilizzare alcune definizioni in cascata in EntityX
" s relazione a Language
come suggerito in altri post, ma non ha alcun effetto.
Se ricarico dei salvati Language
entità trovando dal suo code
utilizzando alcuni HQL-query, quindi tutto funziona bene, ma che è lontano dall'essere 'bello'.
Sfortunatamente il metodo save(...)
di org.hibernate.Session
non restituisce l'oggetto salvato.
Qualcuno ha qualche idea su come risolverlo?
Il codice è in un unico metodo '@ Transactional'. I metodi di servizio sono anche '@ Transactional', ma non richiedono nuove transazioni, quindi suppongo che venga utilizzato quello esistente. Ho salvato la lingua per conto proprio, perché ho una entità di lingua e molte EntityX e ognuna di esse usa la stessa entità di lingua. – t777
controlla la mia modifica, troppo lunga per il commento. Spero di essere chiaro, l'inglese non è la mia lingua madre, mi dispiace –
Ciao @LucaBassoRicci, sto avendo lo stesso problema ma la mia tecnologia è diversa, puoi dare un'occhiata a questo ... http://stackoverflow.com/questions/28279304/errore quando il risparmio-a-oggetto-che-ha-stranieri--oggetto-riferimenti chiave-un-non salvato –