我正在尝试将一些旧代码从手工制作的持久性转移到Hibernate。这里的问题是一个特殊的映射,其中目标实体类型/表由列值定义。
示例数据库表:
表“关系”:
问题在于所有这些类型(例如Item或Category)都具有相同的抽象父级,称为GenericObject,它没有自己的表。继承是TABLE_PER_CLASS。
糟糕的是,通过parentId或childId,您无法告诉类型,这些表中的id不是唯一的。您需要查看parentType和childType。
现在我如何在Hibernate中映射这种疯狂?我希望将父和子映射到GenericObject变量,该变量实际上是Item或Category的实例。
有什么想法吗?
答案 0 :(得分:1)
当目标实体按类型和非唯一ID标识时,Hibernate有@Any
和@ManyToAny
注释。
我认为在您的情况下,由于父母和孩子都是通过这种方式识别的,因此您需要创建Relation
实体,其中父母和子女与@Any
注释关系。