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

Emmanuel Bernard emmanuel at hibernate.org
Wed Dec 1 04:37:33 EST 2010


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