-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: Error while indexing in Hibernate Search
PostPosted: Tue Apr 12, 2011 2:16 pm 
Newbie

Joined: Tue Jan 18, 2011 2:32 pm
Posts: 6
Hi,
Was not getting this error while using Hibernate earlier versions. Upgraded to Hibernate core 3.6.0.Final and Search 3.3.0.Final.
I am using a complex data model and come across this error while deleting a child collection entity manually. The model is:

Parent entity:
Code:
@Entity
@Indexed
public class Company extends MR{
    @OneToMany(mappedBy = "company", cascade = { CascadeType.REMOVE } )
    @org.hibernate.annotations.Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
    @Sort(type = SortType.NATURAL) @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)   
    @LazyField
    @IndexedEmbedded
     private Set<Employee> contacts = new TreeSet<Employee>();
....
}


Child entity:
Code:
@Entity
@Embeddable
public class Employee{
   @ManyToOne @NotNull
   @JoinColumn(name = "COMPANY_ID") @Index(name = "COM")         
   @ContainedIn
   private Company company;
....
}


No cascade all to prevent slowness when the user changes just a single Employee and the record updates 1000's of Employee while saving the Company record. I am manually adding/updating the child entity. But when I remove the child entity, I get this error:
Removing manually
Code:
for (Employee emp : emplist) {
Employee temp = Employee .findById(emp.getId(), Employee .class);
temp.remove();
}


Code:
Caused by: org.springframework.orm.hibernate3.HibernateSystemException: Error while indexing in Hibernate Search (before transaction completion); nested exception is org.hibernate.HibernateException: Error while indexing in Hibernate Search (before transaction completion)
   at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:679)
   at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:102)
   at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:471)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
   at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
   at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
   at org.springframework.transaction.aspectj.AbstractTransactionAspect.ajc$afterReturning$org_springframework_transaction_aspectj_AbstractTransactionAspect$3$2a73e96c(AbstractTransactionAspect.aj:78)
   at com.x.y.z.Entity.remove(AbstractPersistentEntity.java:92)
   at com.x.y.zbacking.company.ManageCompany.doBeforeSaveObject(ManageCompany.java:164)
   at com.x.y.zbacking.AbstractBean.saveObject(AbstractBean.java:757)
   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.jboss.seam.util.Reflections.invoke(Reflections.java:22)
   at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
   at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
   at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
   at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
   at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)
   at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
   at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
   at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
   at org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:32)
   at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
   at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
   at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185)
   at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103)
   at com.x.y.zbacking.company.ManageCompany_$$_javassist_seam_7.saveObject(ManageCompany_$$_javassist_seam_7.java)
   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.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335)
   at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:348)
   at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58)
   at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
   at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
   at org.richfaces.ui.application.StateMethodExpressionWrapper.invoke(StateMethodExpressionWrapper.java:76)
   at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
   ... 46 more
Caused by: 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.ejb.TransactionImpl.commit(TransactionImpl.java:76)
   at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:467)
   ... 84 more
Caused by: javax.persistence.EntityNotFoundException: Unable to find com.x.y.z.company.Contact with id 62
   at org.hibernate.ejb.Ejb3Configuration$Ejb3EntityNotFoundDelegate.handleEntityNotFound(Ejb3Configuration.java:133)
   at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:233)
   at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:285)
   at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
   at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
   at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
   at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:630)
   at org.hibernate.type.ManyToOneType.assemble(ManyToOneType.java:236)
   at org.hibernate.collection.PersistentSet.initializeFromCache(PersistentSet.java:147)
   at org.hibernate.cache.entry.CollectionCacheEntry.assemble(CollectionCacheEntry.java:58)
   at org.hibernate.event.def.DefaultInitializeCollectionEventListener.initializeCollectionFromCache(DefaultInitializeCollectionEventListener.java:159)
   at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:71)
   at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1863)
   at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:369)
   at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111)
   at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186)
   at org.hibernate.search.engine.DocumentBuilderIndexedEntity.buildDocumentFields(DocumentBuilderIndexedEntity.java:457)
   at org.hibernate.search.engine.DocumentBuilderIndexedEntity.getDocument(DocumentBuilderIndexedEntity.java:379)
   at org.hibernate.search.engine.DocumentBuilderIndexedEntity.createAddWork(DocumentBuilderIndexedEntity.java:317)
   at org.hibernate.search.engine.DocumentBuilderIndexedEntity.addWorkToQueue(DocumentBuilderIndexedEntity.java:295)
   at org.hibernate.search.engine.WorkPlan$PerEntityWork.enqueueLuceneWork(WorkPlan.java:445)
   at org.hibernate.search.engine.WorkPlan$PerClassWork.enqueueLuceneWork(WorkPlan.java:246)
   at org.hibernate.search.engine.WorkPlan.getPlannedLuceneWork(WorkPlan.java:150)
   at org.hibernate.search.backend.WorkQueue.prepareWorkPlan(WorkQueue.java:134)
   at org.hibernate.search.backend.impl.BatchedQueueingProcessor.prepareWorks(BatchedQueueingProcessor.java:124)
   at org.hibernate.search.backend.impl.PostTransactionWorkQueueSynchronization.beforeCompletion(PostTransactionWorkQueueSynchronization.java:89)
   at org.hibernate.search.backend.impl.EventSourceTransactionContext$DelegateToSynchronizationOnBeforeTx.doBeforeTransactionCompletion(EventSourceTransactionContext.java:172)
   ... 91 more


Top
 Profile  
 
 Post subject: Re: Error while indexing in Hibernate Search
PostPosted: Wed Apr 13, 2011 5:36 am 
Hibernate Team
Hibernate Team

Joined: Thu Apr 05, 2007 5:52 am
Posts: 1689
Location: Sweden
Hi,

the exception complains about an entity com.x.y.z.company.Contact which you don't even mention in your model. Where does it fit into your model?

--Hardy


Top
 Profile  
 
 Post subject: Re: Error while indexing in Hibernate Search
PostPosted: Wed Apr 13, 2011 10:29 am 
Newbie

Joined: Tue Jan 18, 2011 2:32 pm
Posts: 6
Sorry about that. Its the Employee class. I didn't quote the example well.

When I add the Employees and save them manually, and then save the Company, its works fine. This happens only when I try to remove one or more Employees from Company. When I manually delete the Employee, its throws this exception.

Is it possible that this child object was never indexed and that's why it complains as unable to find the Entity? I tried indexing Employee while saving. Still got the same error while deleting.


Top
 Profile  
 
 Post subject: Re: Error while indexing in Hibernate Search
PostPosted: Wed Apr 13, 2011 2:50 pm 
Hibernate Team
Hibernate Team

Joined: Thu Apr 05, 2007 5:52 am
Posts: 1689
Location: Sweden
You code is missing the actual session code and how you manage the session and transaction. It would be best if you could condense this down to a unit test so that we can re-produce the problem.

I am wondering whether you have the Company containing the Employee still in the same scope. Since you are not removing the employee from the contacts set the company instance might be in an inconsistent state at this point.

--Hardy


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.