używam Wiosna 3.2.3 i 4.2.3 i JDK hibernacji 7.obiekt odwołuje niezapisaną przemijające wystąpienie: jak opróżnić lub powrót zapisany obiekt
Mam proste podmiot:
@Entity
public class Language {
@Id
@GeneratedValue
private long id;
@Column(nullable = false, length = 3, unique = true)
private String code;
}
I zapisany wystąpienie tego podmiotu za pomocą @Service
uwagami klasę z @Transactional
opatrzony metody wykorzystującej DAO, która zapisuje podmiotowi
sessionFactory.getCurrentSession().save(object);
Następnie użyć D zapisaneLanguage
podmiotu do tworzenia EntityX
, który wykorzystywał ją w stosunku ManyToOne
...
lang=new Language();
// ...
languageService.saveLanguage(lang);
e=new EntityX();
// ...
e.setLanguage(lang);
otherService.saveEntity(e);
i EntityX
jest zdefiniowany jako ...
@Entity
public class EntityX {
@ManyToOne
@JoinColumn(nullable = false)
private Language language;
// ...
}
zawsze dotrzesz wyjątek
Exception in thread "main" org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: somepackage.Language
Próbuję użyć niektórych definicji kaskadowych w EntityX
" s stosunek do Language
jak sugerowano w innych postach, ale nie ma żadnego efektu.
Jeśli ponownie załaduję zapisany obiekt Language
, znajdując go za pomocą jego zapytania code
przy użyciu kwerendy HQL, wszystko działa poprawnie, ale jest ono dalekie od bycia "miłym".
Niestety metoda (y) save(...)
z org.hibernate.Session
nie zwraca zapisanego obiektu.
Czy ktoś ma pomysły, jak go rozwiązać?
Kod znajduje się w pojedynczej metodzie '@ Transactional'. Metody usług są również "@ Transactional", ale nie wymagają nowej transakcji, więc przypuszczam, że istniejący jest używany. Zapisałem język dla siebie, ponieważ mam jedną jednostkę języka i wiele jednostek EntityX, a każda z nich używa tej samej jednostki języka. – t777
Sprawdź moją edycję, zbyt długo na komentarz. Mam nadzieję, że będzie jasne, angielski nie jest moim ojczystym językiem, przepraszam –
Hi @ LucaBassoRicci, Mam ten sam problem, ale moja technologia jest inna, możesz rzucić okiem na to .. http://stackoverflow.com/questions/28279304/error-when-saving-a-object-który-has-foreign-object-references-references-an-unsaved –