[hibernate-dev] object is not an instance of declaring class

Emmanuel Bernard emmanuel at hibernate.org
Wed Dec 1 06:22:24 EST 2010


Well that's Christmas before time.
I think it fixes it properly. I forgot that the unproxy method was returning the wrapped object.

On 1 déc. 2010, at 12:08, Sanne Grinovero wrote:

> Emmanuel,
> now I'm failing org.hibernate.search.test.proxy.ProxyTest.testDeteleProxy()
> as it actually succedes but it is annotated as
> 
> @FailureExpected(jiraKey = "HSEARCH-577")
> 
> so it seems I've actually fixed the non-resolved HSEARCH-577, is
> that a correct interpretation of this unit test?
> 
> Sanne
> 
> 2010/12/1 Sanne Grinovero <sanne.grinovero at gmail.com>:
>> thank you, "unproxy" worked great. Not sure why it wasn't there
>> already as I didn't change this area, apparently it was unlikely to
>> receive a proxy in this method.
>> Sanne
>> 
>> 2010/12/1 Emmanuel Bernard <emmanuel at hibernate.org>:
>>> This exception in general can have a bunch of causes.
>>> 
>>> In you case though, in Hibernate Search there are several tools at your disposal. All in HibernateHelper.
>>> For the most part they abstract away Hibernate calls for when we will make Hibernate Search fully independent of Hibernate Core.
>>> 
>>> unproxy: returns this or the underlying implementation behind the proxy (could initialize the proxy by side effect)
>>> getClass: returns the entity class (even in case of proxies)
>>> initialize: intialize the proxy or the collection
>>> isInitialized: returns true if the proxy or the collection is initialized
>>> getClassFromWork: returns the entity class for a given work (probably should be put somewhere else when we abstract Hibernate truly.
>>> 
>>> Emmanuel
>>> 
>>> On 30 nov. 2010, at 21:20, Sanne Grinovero wrote:
>>> 
>>>> Hello,
>>>> I'm blocked by the exception mentioned in the subject, this is also
>>>> affecting my work in Search:
>>>> with the new design I need the object identifier more often than before, and
>>>> even our own org.hibernate.search.test.proxy.ProxyTest fails.
>>>> 
>>>> Searching for similar exceptions I found many users asking for help
>>>> about the same error, also some
>>>> comments are quite recent so it would be nice to find a general solution:
>>>> 
>>>> HHH-5280
>>>> HHH-3399
>>>> HHH-1953
>>>> HHH-4064
>>>> https://forum.hibernate.org/viewtopic.php?t=979408
>>>> 
>>>> The error is that I'm invoking getId() via reflection, but the entity
>>>> instance is actually a javassist proxy.
>>>> 
>>>> Shouldn't org.hibernate.annotations.common.reflection.java.JavaXProperty
>>>> "shield" our code from this kind
>>>> of complexities?
>>>> 
>>>> Suggestions to proceed?
>>>> Sanne
>>>> 
>>>> stacktrace follows:
>>>> 
>>>> org.hibernate.HibernateException: Error while indexing in Hibernate
>>>> Search (before transaction completion)
>>>>       at org.hibernate.search.backend.impl.EventSourceTransactionContext$DelegateToSynchronizationOnBeforeTx.doBeforeTransactionCompletion(EventSourceTransactionContext.java:175)
>>>>       at org.hibernate.engine.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:543)
>>>>       at org.hibernate.engine.ActionQueue.beforeTransactionCompletion(ActionQueue.java:216)
>>>>       at org.hibernate.impl.SessionImpl.beforeTransactionCompletion(SessionImpl.java:571)
>>>>       at org.hibernate.jdbc.JDBCContext.beforeTransactionCompletion(JDBCContext.java:250)
>>>>       at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:138)
>>>>       at org.hibernate.search.test.proxy.ProxyTest.testProxy(ProxyTest.java:63)
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>       at java.lang.reflect.Method.invoke(Method.java:597)
>>>>       at junit.framework.TestCase.runTest(TestCase.java:154)
>>>>       at org.hibernate.testing.junit.functional.annotations.HibernateTestCase.runTest(HibernateTestCase.java:97)
>>>>       at org.hibernate.testing.junit.functional.annotations.HibernateTestCase.runBare(HibernateTestCase.java:85)
>>>>       at junit.framework.TestResult$1.protect(TestResult.java:106)
>>>>       at junit.framework.TestResult.runProtected(TestResult.java:124)
>>>>       at junit.framework.TestResult.run(TestResult.java:109)
>>>>       at junit.framework.TestCase.run(TestCase.java:118)
>>>>       at junit.framework.TestSuite.runTest(TestSuite.java:208)
>>>>       at junit.framework.TestSuite.run(TestSuite.java:203)
>>>>       at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
>>>>       at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>>>>       at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>>>>       at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>>>>       at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>>>>       at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
>>>> Caused by: java.lang.IllegalStateException: Could not get property value
>>>>       at org.hibernate.search.util.ReflectionHelper.getMemberValue(ReflectionHelper.java:94)
>>>>       at org.hibernate.search.engine.DocumentBuilderIndexedEntity.getIndexingId(DocumentBuilderIndexedEntity.java:699)
>>>>       at org.hibernate.search.engine.WorkPlan$PerClassWork.recurseContainedIn(WorkPlan.java:136)
>>>>       at org.hibernate.search.engine.WorkPlan.recurseContainedIn(WorkPlan.java:69)
>>>>       at org.hibernate.search.engine.AbstractDocumentBuilder.processSingleContainedInInstance(AbstractDocumentBuilder.java:773)
>>>>       at org.hibernate.search.engine.AbstractDocumentBuilder.processContainedInInstances(AbstractDocumentBuilder.java:322)
>>>>       at org.hibernate.search.engine.WorkPlan$PerEntityWork.processContainedIn(WorkPlan.java:268)
>>>>       at org.hibernate.search.engine.WorkPlan$PerClassWork.processContainedIn(WorkPlan.java:130)
>>>>       at org.hibernate.search.engine.WorkPlan.processContainedIn(WorkPlan.java:62)
>>>>       at org.hibernate.search.backend.impl.BatchedQueueingProcessor.prepareWorks(BatchedQueueingProcessor.java:150)
>>>>       at org.hibernate.search.backend.impl.PostTransactionWorkQueueSynchronization.beforeCompletion(PostTransactionWorkQueueSynchronization.java:86)
>>>>       at org.hibernate.search.backend.impl.EventSourceTransactionContext$DelegateToSynchronizationOnBeforeTx.doBeforeTransactionCompletion(EventSourceTransactionContext.java:172)
>>>>       ... 25 more
>>>> Caused by: java.lang.IllegalArgumentException: Invoking id with wrong parameters
>>>>       at org.hibernate.annotations.common.reflection.java.JavaXProperty.invoke(JavaXProperty.java:84)
>>>>       at org.hibernate.search.util.ReflectionHelper.getMemberValue(ReflectionHelper.java:91)
>>>>       ... 36 more
>>>> Caused by: java.lang.IllegalArgumentException: object is not an
>>>> instance of declaring class
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>       at java.lang.reflect.Method.invoke(Method.java:597)
>>>>       at org.hibernate.annotations.common.reflection.java.JavaXProperty.invoke(JavaXProperty.java:74)
>>>>       ... 37 more
>>>> _______________________________________________
>>>> hibernate-dev mailing list
>>>> hibernate-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>> 
>>> 
>> 





More information about the hibernate-dev mailing list