在两个不同的模式中使用两个具有相同名称的表时,避免使用Hibernate Annotation Exception

时间:2011-11-01 16:24:34

标签: java hibernate exception

我有两个表,在两个不同的模式中都命名为Language,我们称之为schema1和schema2。

当我为每个表注释模型时,我的代码如下所示:       @实体      @Table(name =“language”,catalog =“schema1”)            公共课语言{

.....................

 @Entity
 @Table(name="language", catalog="schema2")
 public class Language {

但是当这样做时,我得到一个注释异常错误,如下所示:

org.hibernate.AnnotationException:两次使用相同的实体名称:语言

那么,这是否意味着我不能在两个不同的数据库模式中使用相同名称的表格,或者我只是将我的模型注释错误?

谢谢,

埃利奥特

2 个答案:

答案 0 :(得分:4)

我在复杂的类结构中遇到了同样的问题,上面的答案只是一种解决方法。您可以使用名称变量定义@Entity注释,以区分这两个类。例如:

第1课:

@Entity(name="language_v1")
@Table(name="language", catalog="schema1")
public class Language {

第2课:

@Entity(name="language_v2")
@Table(name="language", catalog="schema2")
public class Language {   

这将允许您保留您的班级结构。

答案 1 :(得分:0)

事实证明,模式2中的模型是一个对象,它是模式1中模型对象的扩展。当两个表的名称相同时,Hibernate不喜欢这种结构。使第二个对象不是第一个对象的扩展,消除了问题。