Java 在两个不同模式中使用两个同名表时避免Hibernate注释异常
我有两个表,都是用两种不同的模式命名的语言,让我们称它们为schema1和schema2 当我为这些表中的每个表注释模型时,我的代码如下所示: @实体 @表(name=“language”,catalog=“schema1”) 公共类语言{Java 在两个不同模式中使用两个同名表时避免Hibernate注释异常,java,hibernate,exception,Java,Hibernate,Exception,我有两个表,都是用两种不同的模式命名的语言,让我们称它们为schema1和schema2 当我为这些表中的每个表注释模型时,我的代码如下所示: @实体 @表(name=“language”,catalog=“schema1”) 公共类语言{ ..................... @Entity @Table(name="language", catalog="schema2") public class Language { 但在执行此操作时,我得到一个注释异常错误,如下所示:
.....................
@Entity
@Table(name="language", catalog="schema2")
public class Language {
但在执行此操作时,我得到一个注释异常错误,如下所示:
org.hibernate.AnnotationException:两次使用相同的实体名称:Language
那么,这是否意味着我不能在两个不同的数据库模式中拥有相同名称的表,或者我只是将我的模型注释错了
谢谢,
Elliott事实证明,模式2中的模型是模式1中模型对象的扩展。当两个表的名称相同时,Hibernate不喜欢这种构造。使第二个对象不是第一个对象的扩展,就消除了问题。在复杂的c语言中,我也遇到过同样的问题lass结构,上面的答案只是一个解决方法。您可以使用名称变量定义@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 {
这将允许您保留类结构。是否尝试使用表注释的schema属性而不是catalog?