Я написал метод EJB без сохранения состояния, позволяющий получить объект в режиме «только для чтения».
Способ сделать это - получить сущность с помощью EntityManager, а затем отсоединить ее (используя JPA 2.0 EntityManager).
Мой код следующий:
@PersistenceContext
private EntityManager entityManager;
public T getEntity(int entityId, Class<T> specificClass, boolean readOnly) throws Exception{
try{
T entity = (T)entityManager.find(specificClass, entityId);
if (readOnly){
entityManager.detach(entity);
}
return entity;
}catch (Exception e){
logger.error("", e);
throw e;
}
}
Получение сущности работает нормально, но вызов метода detach
возвращает следующую ошибку:
GRAVE: javax.ejb.EJBException
at ...
Caused by: java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.detach(Ljava/lang/Object;)V
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.detach(EntityManagerWrapper.java:973)
at com.mycomp.dal.MyEJB.getEntity(MyEJB.java:37)
Я не могу получить больше информации и не понимаю, в чем проблема ...
Может ли кто-нибудь помочь?