如何使用Hibernate根据属性将一个jpa实体映射到多个表

如何使用Hibernate根据属性将一个jpa实体映射到多个表,hibernate,jpa,jpa-2.0,Hibernate,Jpa,Jpa 2.0,我将把来自外部产品的消息存储在数据库中。所有邮件都是相同的,并且具有类别属性。由于将在db上执行的大多数查询都会过滤类别,因此我的db架构师建议将每个类别的一个表拆分为一个表 通常情况下,我需要每桌一节课。不幸的是,有100多个类别 可以用JPA/Hibernate实现我的场景吗?除了生成100个子类之外,我认为没有一种简单的方法可以实现这一点。如果每一类消息都具有相同的属性,那么子类应该非常简单,并且可以由一个小程序自动生成)。然而,只有当类别集是静态的而不是动态的时,这才有效 然而,我首先要

我将把来自外部产品的消息存储在数据库中。所有邮件都是相同的,并且具有类别属性。由于将在db上执行的大多数查询都会过滤类别,因此我的db架构师建议将每个类别的一个表拆分为一个表

通常情况下,我需要每桌一节课。不幸的是,有100多个类别


可以用JPA/Hibernate实现我的场景吗?

除了生成100个子类之外,我认为没有一种简单的方法可以实现这一点。如果每一类消息都具有相同的属性,那么子类应该非常简单,并且可以由一个小程序自动生成)。然而,只有当类别集是静态的而不是动态的时,这才有效

然而,我首先要挑战建筑师的设计。这样做,您将失去

  • 具有消息的外键(因为它们将分布在100个表中)
  • 跨消息具有唯一的约束(即使对于其ID)
  • 对不同的邮件类别进行合理的查询

而且我认为您不会获得太多,因为如果消息表上的索引包括category列,那么查询的速度应该与某个类别的消息在专用表中一样快。

我认为除了生成100个子类之外,没有简单的方法可以做到这一点。如果每一类消息都具有相同的属性,那么子类应该非常简单,并且可以由一个小程序自动生成)。然而,只有当类别集是静态的而不是动态的时,这才有效

然而,我首先要挑战建筑师的设计。这样做,您将失去

  • 具有消息的外键(因为它们将分布在100个表中)
  • 跨消息具有唯一的约束(即使对于其ID)
  • 对不同的邮件类别进行合理的查询
我认为您不会获得太多,因为如果消息表上的索引包括category列,那么查询的速度应该与一个类别的消息在专用表中的速度一样快