【问题标题】:Avoiding Hibernate Annotation Exception when using two identically named tables in two different schemas在两个不同模式中使用两个同名表时避免 Hibernate Annotation 异常
【发布时间】:2011-12-19 15:38:33
【问题描述】:

我有两个表,都在两个不同的模式中命名为语言,我们称它们为模式 1 和模式 2。

当我为这些表中的每一个注解模型时,我的代码如下所示: @实体 @Table(name="语言", 目录="schema1") 公共类语言{

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

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

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

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

那么,这是否意味着我不能在两个不同的数据库架构中拥有同名的表,或者我只是对模型进行了错误的注释?

谢谢,

艾略特

【问题讨论】:

  • 您是否尝试使用 Table 注释的架构属性而不是目录?

标签: java hibernate exception


【解决方案1】:

我在一个复杂的类结构中遇到了同样的问题,上面的答案只是一种解决方法。您可以使用名称变量定义 @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 {   

这将允许你保持你的类结构。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 2017-09-02
      • 2012-12-02
      • 2017-11-16
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多