繁体   English   中英

基于列值的JPA目标实体类型

[英]JPA target entity type based on column value

我正在尝试将一些旧代码从手工持久性迁移到Hibernate。 这里的问题是特殊的映射,其中目标实体类型/表由列值定义。

示例数据库表:

表“关系”:

  • id-我的主键
  • parentType-一个指定父级类型的字符(例如,“ I”表示Item表中的对象,“ Category”表中的“ C”)
  • parentId-parentType表中的主键
  • childType-指定子类型的字符
  • childId-子表中的主键

问题是所有这些类型(例如Item或Category)具有相同的抽象父对象,称为GenericObject,它没有自己的表。 继承是TABLE_PER_CLASS。

不好的是,通过parentId或childId您无法分辨出类型,这些ID在这些表中不是唯一的。 您需要查看parentType和childType。

现在我该如何在Hibernate中映射这种疯狂? 我想将父级和子级映射到GenericObject变量,该变量实际上是Item或Category的实例。

有任何想法吗?

Hibernate有@Any@ManyToAny为目标时的实体由类和非唯一ID标识的情况下的注释。

我认为在您的情况下,由于以这种方式标识了父母和子女,因此您需要创建带有以@Any注释的父母和子女的Relation实体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM