Stworzyłem obiekt tylko do odczytu po pobraniu go za pomocą:
Session session = (Session)entityManager.getDelegate();
session.setReadOnly( entity, makeReadOnly );
Chciałbym móc przetestować, czy ten obiekt i jego leniwy załadowane dzieci są w rzeczywistości programowo tylko do odczytu, ale nie widzę żadnego API do tego. Czy takie API istnieje?
Aktualizacja: Używam Hibernate 3.3.1
Odpowiedzi:
2 dla odpowiedzi № 1Jest Session.isReadOnly (Object entityOrProxy) za to.
edytować: Brzydki hack na 3.3.1:
//usual imports
//....
import org.hibernate.impl.SessionImpl;
import org.hibernate.engine.EntityEntry;
import org.hibernate.engine.Status;
import org.hibernate.engine.StatefulPersistenceContext;
Session session = (Session)entityManager.getDelegate();
SessionImpl sessImpl = (SessionImpl) session;
if (((StatefulPersistenceContext) sessImpl.getPersistenceContext()).getEntry(entity).getStatus() == Status.READ_ONLY) {
dosomething
};