Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在两个不同模式中使用两个同名表时避免Hibernate注释异常_Java_Hibernate_Exception - Fatal编程技术网

Java 在两个不同模式中使用两个同名表时避免Hibernate注释异常

Java 在两个不同模式中使用两个同名表时避免Hibernate注释异常,java,hibernate,exception,Java,Hibernate,Exception,我有两个表,都是用两种不同的模式命名的语言,让我们称它们为schema1和schema2 当我为这些表中的每个表注释模型时,我的代码如下所示: @实体 @表(name=“language”,catalog=“schema1”) 公共类语言{ ..................... @Entity @Table(name="language", catalog="schema2") public class Language { 但在执行此操作时,我得到一个注释异常错误,如下所示:

我有两个表,都是用两种不同的模式命名的语言,让我们称它们为schema1和schema2

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

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

 @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?