【问题标题】:Mapping a single parent column table to multiple columns of a child table using JPA and Hibernate使用 JPA 和 Hibernate 将单个父列表映射到子表的多个列
【发布时间】:2017-08-13 09:54:52
【问题描述】:

我正在尝试将单个父主键映射到多个子外键。我有一个 User 表,其中包含不同类型的用户,例如他们是 admin、worker 类型和 client 类型的用户。然后我有一个名为 job 的子表。单个作业记录包含对管理员、工作人员和客户端主键的引用。我尝试在hibernate中映射这个sinario,但是hibernate给了我一个错误,说我不能将一个列映射到多个列。我附上了我的桌子设计的电子邮件。

【问题讨论】:

  • 经过深思熟虑。我看到我可以为每种类型的用户设置单独的表。这是不可能的,因为有许多其他表引用了用户表,这会严重影响数据库的设计。

标签: java hibernate database-design orm


【解决方案1】:

您可以在 Job POJO 中保留 adminId、workerId 和 clientId 引用,然后配置 3 个多对一标签作为它的属性,都引用同一张表。我认为这会起作用,但我现在无法测试它。如果您使用注释,您能否发布您尝试使用的 XML 或 Java 代码?更好的是,您可以发布堆栈跟踪吗?

【讨论】:

  • 在用户 xml 映射上我有以下 <one-to-many name="jobL" mapped-by="admin" fetch="LAZY" target-entity="za.co.studentfixit.domain.entities.Job" /> 和在工作 xml 工作映射上我有以下 <many-to-one name="admin"> <join-column name="userId"/> </many-to-one> <many-to-one name="client"> <join-column name="userId"/> </many-to-one> <many-to-one name="worker"> <join-column name="userId"/> </many-to-one>@Dev_Urandom
  • 你的建议我相信正是我尝试做的,但 Hibernate 给了我错误,说我不能有多个列引用同一列 @Dev_Urandom
猜你喜欢
  • 1970-01-01
  • 2012-01-10
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 2011-06-19
  • 2013-03-11
  • 1970-01-01
相关资源
最近更新 更多