我正在编写一个程序,根据选择显示书的不同翻译。所以假设我在DB中有3个相同列的表,比如说英语,法语和德语。然后我有一个POJO,比如Book.java。
现在我如何使用同一个类根据用户选择查询特定表。我是否动态更改@table(name =“...”)的值?甚至可能吗?我一直在使用jdbc,但这将是我的第一个hibernate项目。
答案 0 :(得分:5)
您可以将所有字段和方法存储在使用@MappedSuperclass
注释的基类中,并且具有三个不同的子类,每个子类具有不同的@Table
注释值。
但这对我来说似乎是一个正常化问题。如果您有三个表完全保持相同的列,为什么不使用一个包含额外language
列的表?
答案 1 :(得分:1)
您应该设计一个类Hierarchy:Book class beeing the topmost class,BookFrench,BookGerman,BookEnglish beeing子类。然后你将不得不使用一个hibernate继承模型(为此,我认为MappedSuperClass将是最有趣的一个)。然后你会有不同的类,但所有的实例都是book Pojos,每个子类在DB中都有自己的表。
此致 斯特凡