[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2437?page=all ]
Max Rydahl Andersen closed HHH-2437:
------------------------------------
Resolution: Rejected
HibernateProxyHelper.getClassWithoutInitializingProxy(o)
and
session.getEntityName(o);
SessionFactoryImpl.getClassMetadata method is not supported CGLib
enhanced classes
----------------------------------------------------------------------------------
Key: HHH-2437
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2437
Project: Hibernate3
Type: Bug
Components: core
Versions: 3.2.1, 3.2.2
Reporter: Alexey Kakunin
In some cases Hibernate may returns classes, enhanced by CGLib. But if then we will try
to get Class MetaData for such classes - it will be failed. For example:
Object obj = getObjectFrom Hibernate(); //here CGLib enhanced object is returned
ClassMetaData metaData = sessionFactory.getClassMetaData(obj.getClass());
//even we just get class from hibernate and it's class supported by Hibernate - we
will get here NULL.
Simple Solution is to check before getting name from class:
public ClassMetadata getClassMetadata(Class persistentClass) throws HibernateException
{
Class fixedClass = persistentClass;
if (net.sf.cglib.proxy.Enhancer.isEnhanced(persistentClass)) {
// try to get class itself
fixedClass = valueClass.getSuperclass();
}
return getClassMetadata( fixedClass.getName() );
}
but not sure it is really correct fix
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira