Win a copy of The Little Book of Impediments (e-book only) this week in the Agile and Other Processes forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

@OneToMany Hibernate 3 @Filters not working

 
anjan bachchu
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi All,

Thanks in advance to any pointers and info.

I have a DB schema design which uses �Soft/virtual Deletes� where every table has a column �del_ind�(number) which indicates(1/0) whether a row is considered �deleted� or not. If the app wants a row to be �deleted�, it then sets it to 1. On normal insertion, this column is set to �0�.

I am using Hibernate 3 annotations(@FilterDef, @Filter) to filter out Objects that have the �delete_ind� column set to value 1. The Filter is working for the Main Domain Object. But the Filter is not working for the dependent child Object(association).

Details
=======

I have a �Plan� Class that has a OneToMany relationship with �Customer�



I am able to apply the Filter to the Main Entity "PlanImpl". Th filter works just fine. But when I apply the Filter to the association of @OneToMany association of Plan to PlanCustomer, the Filter does not work.

Does anyone know what I need to do to get it right. Google did not do the trick this time around.

Thank you so much,

BR,
~A
 
Mark Spritzler
ranger
Sheriff
Posts: 17278
6
IntelliJ IDE Mac Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have never done this, so my suggestion is just a complete guess. But what happens if the filter is put at the class level for all the mapped classes, instead of Annotating the OneToMany

For instance, the PlanCustomer class has its filter in that class, rather than on the private Set<PlanCustomer> planCustomers = new HashSet<PlanCustomer>();

or, maybe for the OneToMany the field to filter on remains the same as what is in the class level.

Mark
 
anjan bachchu
Greenhorn
Posts: 10
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Mark,

Thanks for the reply.

I have never done this, so my suggestion is just a complete guess. But what happens if the filter is put at the class level for all the mapped classes, instead of Annotating the OneToMany.


Since Each Entity in our Table has a similar BUT slightly different column names(ASSRT_PLAN_DEL_IND, ASSRT_PLAN_CUST_DEL_IND, etc), using the same Filter across multiple classes is not feasible.


For instance, the PlanCustomer class has its filter in that class, rather than on the private Set<PlanCustomer> planCustomers = new HashSet<PlanCustomer>();

or, maybe for the OneToMany the field to filter on remains the same as what is in the class level.

Mark


Given the fact that the column on each table has a different name in each table, I believe that I won't be able to apply this advice.

Thanks for any suggestions.

BR,
~A
 
Mark Spritzler
ranger
Sheriff
Posts: 17278
6
IntelliJ IDE Mac Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I didn't say use the same field name. I said don't put it all in the same class.

So the annotation for each class would have the field that is specific to that class.

Mark
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic