将具有相同模式的多个表映射到hibernate中的相同POJO

时间:2011-08-23 20:20:10

标签: java hibernate orm jdbc

我正在编写一个程序,根据选择显示书的不同翻译。所以假设我在DB中有3个相同列的表,比如说英语,法语和德语。然后我有一个POJO,比如Book.java。

现在我如何使用同一个类根据用户选择查询特定表。我是否动态更改@table(name =“...”)的值?甚至可能吗?我一直在使用jdbc,但这将是我的第一个hibernate项目。

2 个答案:

答案 0 :(得分:5)

您可以将所有字段和方法存储在使用@MappedSuperclass注释的基类中,并且具有三个不同的子类,每个子类具有不同的@Table注释值。

但这对我来说似乎是一个正常化问题。如果您有三个表完全保持相同的列,为什么不使用一个包含额外language列的表?

答案 1 :(得分:1)

您应该设计一个类Hierarchy:Book class beeing the topmost class,BookFrench,BookGerman,BookEnglish beeing子类。然后你将不得不使用一个hibernate继承模型(为此,我认为MappedSuperClass将是最有趣的一个)。然后你会有不同的类,但所有的实例都是book Pojos,每个子类在DB中都有自己的表。

此致  斯特凡