实体JPA / Hibernate中的条件JoinColumn

时间:2016-08-17 12:32:30

标签: java spring hibernate jpa

我确实需要根据某些条件从三个不同的表中获取数据。 例如

@Entity
class Order{
   id;
   type;
   typeId;

   @Join with boqTable to get the Boq Associated with if type == BOQ and id = typeId
   @Join with customTable to get custom data associated if type == CUSTOM and id = typeId
}

我应该能够使用Order实体插入和更新子表。 我如何使用JPA / Hibernate ...我搜索了很多,我无法得到任何解决方案,除了在服务级别手动执行而不是在实体模型处理

1 个答案:

答案 0 :(得分:1)

您可以使用2种非JPA兼容的Hibernate特定功能之一。如果条件是静态的,那么请参阅Hibernate @Where注释。见2.4.6节:

https://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/

否则请参阅Hibernate过滤器:

  

Hibernate3能够预先定义过滤条件并附加   那些类级别和集合级别的过滤器。一个过滤器   criteria允许您定义类似于的限制子句   现有的"其中"类和各种可用的属性   集合元素。然而,这些过滤条件可以是   参数。然后,应用程序可以在运行时决定是否   应启用某些过滤器以及它们的参数值   应该。过滤器可以像数据库视图一样使用,但它们是   在应用程序内参数化。

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/filters.html