【问题标题】:2 Hibernate entities on the same database table. Is this possible?2 在同一个数据库表上休眠实体。这可能吗?
【发布时间】:2010-12-11 17:27:05
【问题描述】:

我正在开发一个具有默认功能的模块化 Web 项目,可以使用“插件”进行扩展,该插件是一个附加的 Java 库。

“核心”项目知道映射到 User 表的 User 实体。 插件项目将此用户扩展为一个 ExtendedUser,它也映射到同一个表-

两个实体应该共存,其中用户只知道某些列。

两个实体都在同一类路径中包含的不同库中声明。

你如何让它与hibernate一起工作?

谢谢!

【问题讨论】:

  • 我想知道你在这方面是否有任何进展..
  • SO question 似乎或多或少地在谈论同样的事情......

标签: hibernate


【解决方案1】:

假设你的意思是ExtendedUser是一个扩展User的类,那么你可以使用Hibernate的“table-per-class-hierarchy”继承策略。请参阅docs here。使用注释,您使用 InheritanceType.SINGLE_TABLE(请参阅文档 2.2.4.2 here)。

【讨论】:

  • 但是,用户仍应作为自己的实体共存并被其他实体引用。由于标有@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 的表没有标有@Entity,所以不会被识别为自己的身份。
【解决方案2】:

我曾经尝试将一个表映射到两个 Java 实体(没有继承方案)。我只是想在保留旧实体的同时尝试一些不同的映射。

如果您的 User 和 ExtenderUser 共享同一个实体 X 集合,Hibernate 会抱怨不知道 X 连接回哪个实体:User 或 ExtenderUser。

所以底线是,在我的情况下它不起作用,而且不这样做是正确的。

我没有尝试过继承方案,但从你的意思来看,你也没有。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2015-10-19
    • 1970-01-01
    相关资源
    最近更新 更多