Как узнать, доступен ли объект Hibernate только для чтения или нет - PullRequest
2 голосов
/ 07 декабря 2011

Я сделал объект доступным только для чтения после извлечения, используя:

Session session = (Session)entityManager.getDelegate();
session.setReadOnly( entity, makeReadOnly );

Я бы хотел иметь возможность проверить, действительно ли этот объект и его лениво загруженные потомки доступны только для чтения программным путем, но я не вижу никакого API для этого. Существует ли такой API?

Обновление: я использую Hibernate 3.3.1

1 Ответ

2 голосов
/ 07 декабря 2011

Для этого есть Session.isReadOnly (Object entityOrProxy) .

edit: Гадкий хак для 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
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...