[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-3504?page=c...
]
Dan Haywood commented on HHH-3504:
----------------------------------
I've also hit this problem, and I'm getting an "argument type mismatch"
exception raised. Here's the stacktrace (and I have a theory to follow):
Thread [main] (Suspended)
IllegalArgumentException(RuntimeException).<init>(String) line: 43
IllegalArgumentException.<init>(String) line: 36
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native
method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
Enhancer.setCallbacksHelper(Class, Callback[], String) line: 616
Enhancer.setThreadCallbacks(Class, Callback[]) line: 609
Enhancer.registerCallbacks(Class, Callback[]) line: 578
CGLIBLazyInitializer.getProxyInstance(Class, CGLIBLazyInitializer) line: 129
CGLIBLazyInitializer.getProxy(Class, String, Class, Class[], Method, Method,
AbstractComponentType, Serializable, SessionImplementor) line: 116
CGLIBProxyFactory.getProxy(Serializable, SessionImplementor) line: 72
PojoEntityTuplizer(AbstractEntityTuplizer).createProxy(Serializable, SessionImplementor)
line: 402
SingleTableEntityPersister(AbstractEntityPersister).createProxy(Serializable,
SessionImplementor) line: 3483
DefaultLoadEventListener.createProxyIfNecessary(LoadEvent, EntityPersister, EntityKey,
LoadEventListener$LoadType, PersistenceContext) line: 298
DefaultLoadEventListener.proxyOrLoad(LoadEvent, EntityPersister, EntityKey,
LoadEventListener$LoadType) line: 219
DefaultLoadEventListener.onLoad(LoadEvent, LoadEventListener$LoadType) line: 126
SessionImpl.fireLoad(LoadEvent, LoadEventListener$LoadType) line: 905
SessionImpl.internalLoad(String, Serializable, boolean, boolean) line: 873
ManyToOneType(EntityType).resolveIdentifier(Serializable, SessionImplementor) line: 590
ManyToOneType(EntityType).resolve(Object, SessionImplementor, Object) line: 412
TwoPhaseLoad.initializeEntity(Object, boolean, SessionImplementor, PreLoadEvent,
PostLoadEvent) line: 139
CascadeEntityLoader(Loader).initializeEntitiesAndCollections(List, Object,
SessionImplementor, boolean) line: 877
CascadeEntityLoader(Loader).doQuery(SessionImplementor, QueryParameters, boolean) line:
752
CascadeEntityLoader(Loader).doQueryAndInitializeNonLazyCollections(SessionImplementor,
QueryParameters, boolean) line: 259
CascadeEntityLoader(Loader).loadEntity(SessionImplementor, Object, Type, Object, String,
Serializable, EntityPersister) line: 1881
CascadeEntityLoader(AbstractEntityLoader).load(SessionImplementor, Object, Object,
Serializable) line: 71
CascadeEntityLoader(AbstractEntityLoader).load(Serializable, Object, SessionImplementor)
line: 65
SingleTableEntityPersister(AbstractEntityPersister).load(Serializable, Object, LockMode,
SessionImplementor) line: 3072
DefaultRefreshEventListener.onRefresh(RefreshEvent, Map) line: 145
DefaultRefreshEventListener.onRefresh(RefreshEvent) line: 62
SessionImpl.fireRefresh(RefreshEvent) line: 929
SessionImpl.refresh(Object) line: 913
....
My suspicion is that the repackaging of cglib is incomplete, with the dynamically created
method that is being invoked (called "CGLIB$SET_THREAD_CALLBACKS") declared with
the wrong signature. I reverse engineered Enhancer and saw the following:
private static final Type CALLBACK_ARRAY =
Type.getType("[Lnet/sf/cglib/proxy/Callback;");
private static final Signature CSTRUCT_NULL = TypeUtils.parseConstructor("");
private static final Signature SET_THREAD_CALLBACKS = new
Signature("CGLIB$SET_THREAD_CALLBACKS", Type.VOID_TYPE, new Type[] {
CALLBACK_ARRAY });
Note the CALLBACK_ARRAY which I think is incorrect: it should be
"[Lorg/hibernate/repackage/cglib/proxy/Callback;". This is used to declare the
signature as you can see.
Hibernate 3.3.1GA issue when using CGLIB
----------------------------------------
Key: HHH-3504
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-3504
Project: Hibernate Core
Issue Type: Bug
Affects Versions: 3.3.1
Environment: Database : hsqldb/Sybase
Reporter: Montagnon Cyril
When forcing hibernate to use CGLIB (by the way javassist is still slower than CGLib), I
get the following exception (at the end of the post)
It seems that the repackaging of the CGLIB project (hibernate-cglib-repack) doesn't
behave as expected :
Shouldn't it look up for the org.hibernate.repackage.cglib.proxy.Callback class
instead of the net.sf.cglib.proxy.Callback class.
java.lang.NoClassDefFoundError: net.sf.cglib.proxy.Callback
at org.hibernate.repackage.cglib.proxy.Enhancer.class$(Enhancer.java:68)
at org.hibernate.repackage.cglib.proxy.Enhancer.getCallbacksSetter(Enhancer.java:627)
at org.hibernate.repackage.cglib.proxy.Enhancer.setCallbacksHelper(Enhancer.java:615)
at org.hibernate.repackage.cglib.proxy.Enhancer.setThreadCallbacks(Enhancer.java:609)
at org.hibernate.repackage.cglib.proxy.Enhancer.registerCallbacks(Enhancer.java:578)
at
org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyInstance(CGLIBLazyInitializer.java:133)
at
org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxy(CGLIBLazyInitializer.java:116)
at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.getProxy(CGLIBProxyFactory.java:72)
at
org.hibernate.tuple.entity.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:402)
at
org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3483)
at
org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:298)
at
org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:219)
at
org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:822)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:815)
at
org.springframework.orm.hibernate3.HibernateTemplate$3.doInHibernate(HibernateTemplate.java:566)
at
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)
at
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at
org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:560)
at
org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:554)
at
north.stardust2.core.test.unit.dao.listed.IndexCompositionDaoTest.findIndexCompositionByListedIndexAt(IndexCompositionDaoTest.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
at org.junit.runners.Suite.access$000(Suite.java:26)
at org.junit.runners.Suite$1.run(Suite.java:93)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.runners.Suite.run(Suite.java:91)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
--
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