/ / Jak mogę sprawdzić, czy obiekt hibernacji jest tylko do odczytu, czy nie - java, hibernacja, utrwalanie

Jak mogę sprawdzić, czy obiekt hibernacji jest tylko do odczytu, czy nie - java, hibernacja, utrwalanie

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 № 1

Jest 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
};