Eu fiz uma entidade somente leitura depois de recuperá-la usando:
Session session = (Session)entityManager.getDelegate();
session.setReadOnly( entity, makeReadOnly );
Eu gostaria de ser capaz de testar se este objeto e seus filhos carregados de preguiça são, na verdade, somente leitura programaticamente, mas eu não vejo nenhuma API para fazer isso. Existe tal API?
Atualização: Eu estou usando o Hibernate 3.3.1
Respostas:
2 para resposta № 1Há Session.isReadOnly (objeto entityOrProxy) por isso.
editar: Hack feio para 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
};