2同一数据库表上的Hibernate实体。这可能吗?

时间:2010-12-11 17:27:06

标签: hibernate

我正在开发一个具有默认功能的模块化Webproject,可以使用“插件”进行扩展,这是一个额外的Java库。

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

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

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

如何让它与hibernate一起使用?

谢谢!

2 个答案:

答案 0 :(得分:3)

假设您的意思是ExtendedUser是一个扩展User的类,那么您可以使用Hibernate的“每个类的表层次结构”继承策略。请参阅docs here。使用注释,您可以使用InheritanceType.SINGLE_TABLE(请参阅文档2.2.4.2 here)。

答案 1 :(得分:1)

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

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

所以底线,在我的情况下,它没有用,而且没有。

我没有尝试过继承方案,但是根据你所说的,你也没有。