|
In my case, our entities are J2SE proxies and their entity names are determined at runtime using an Hibernate session interceptor (#getEntityName(...)). When enabling Hibernate DEBUG statements, AnyType fails to determine the correct entityname of the runtime instance because it simply bypasses the session interceptor :
return value == null ? "null" : factory.getTypeHelper() .entity(HibernateProxyHelper.getClassWithoutInitializingProxy(value)) .toLoggableString( value, factory );
The following error occurs :
org.hibernate.MappingException: Unknown entity: com.sun.proxy.$Proxy22 at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:1141) at org.hibernate.type.EntityType.toLoggableString(EntityType.java:553) at org.hibernate.type.AnyType.toLoggableString(AnyType.java:201) at org.hibernate.internal.util.EntityPrinter.toString(EntityPrinter.java:79) at org.hibernate.internal.util.EntityPrinter.toString(EntityPrinter.java:121) at org.hibernate.event.internal.AbstractFlushingEventListener.logFlushResults(AbstractFlushingEventListener.java:132) at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:108) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1234) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404) at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101) at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
|