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.grinov...@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 <emman...@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@lists.jboss.org >>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev >>> >>> >> _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev