/ / Hibernacja nie jest opróżniana, zanim find () spowoduje powstanie pustej encji (JBoss AS7 zarządzany emfami za pomocą jp2) - wiosna, hibernacja, jpa-2.0, jboss7.x

Hibernacja nie jest opróżniana, zanim find () spowoduje utworzenie jednostki pustej (JBoss AS7 zarządzany emfami za pomocą jp2) - wiosna, hibernacja, jpa-2.0, jboss7.x

Zmieniłem menedżera encji aplikacjiFabryka od wiosennego zarządzania do zarządzania kontenerami i natknęła się na problem. Podczas tworzenia podmiotu, są chwile, kiedy muszę go odpytać w ramach tej samej transakcji, w której został pierwotnie utworzony, zanim zostanie on automatycznie wypróżniony na końcu. Wiosną menadżer jednostki (chyba) automatycznie wypłukuje kontekst przed uruchomieniem find i będzie mógł zwrócić poprawny obiekt, ale w jboss metoda find zwraca wartość null.

Oto próbka problemu:

@PersistenceContext
private EntityManager entityManager;

private void test(){
Person person = new Person("firstname", "lastname", "email", "user", "pass", Person.PersonType.admin);
entityManager.persist(person);
assert person.getId() != null;
Person person2 = entityManager.find(Person.class, person.getId());
assert person2 != null; //fail in jboss, ok in Spring
}

Jeśli spróbuję dodać entityManager.flush() zadzwoń pomiędzy persist() i find() metody, jboss rzuca a javax.persistence.TransactionRequiredException: no transaction is in progress błąd, niezależnie od tego, czy wrzucam adnotacje @Transactional wokół metody / klasy przeprowadzającej test.

Moje zestawy plików persistence.xml <property name="org.hibernate.FlushMode" value="auto"/>, ale wydaje się, że nie działa.

Czy jest jakaś właściwość konfiguracyjna, której nie udało mi się przekazać jbossowi, aby opróżnił swój kontekst do bazy danych przed uruchomieniem funkcji Znajdź? Czy mogę nieprawidłowo zamawiać moje oświadczenia?

Włożyłem mój persistence.xml i my-ds.xml pliki na pastebin.

Dzięki za pomoc.

Edytować

Zdecydowany. Zobacz komentarze poniżej

Odpowiedzi:

0 dla odpowiedzi № 1

Wkrótce po załadowaniu pliku spring-data.xml zdałem sobie sprawę, że zapomniałem o fasoli. Po dodaniu tag @Transactional działał zgodnie z oczekiwaniami, a problem został rozwiązany.