Русский English Тэги View Sergey Zolotaryov's profile on LinkedIn Вход
Глюки проксей в Hibernate
Постоянная ссылка 18-07-2008 anydoby java

Сегодня натолкнулся на забавную штуку:


org.hibernate.MappingException: Unknown entity: com.discountweb.pojo.Product$$EnhancerByCGLIB$$d38ca5fe
	at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)
	at org.hibernate.impl.SessionFactoryImpl.evict(SessionFactoryImpl.java:837)

Код, который делает evict:


  Serializable identifier = session.getIdentifier(entity);
  session.getSessionFactory().evict(entity.getClass(), identifier);

Решение простое:


  Serializable identifier = session.getIdentifier(entity);
  String entityName = session.getEntityName(entity);
  session.getSessionFactory().evictEntity(entityName, identifier);

Добавить комментарий

and
09-09-2008

Исходный класс прокси-объекта можно получить с помощью Hibernate.getClass(obj)

А вообще я обычно использую session.evict(obj), и таких проблем никогда нет.

anydoby
09-09-2008

Да. Это я тоже нашел :) но много позже. После того, как заменил instanceof на visitor pattern.

Предыдущая статья Настройка JAAS в Tomcat Следующая статья Осторожнее с varargs методами