在Hibernate中完全限定Oracle表名

时间:2018-01-11 16:17:45

标签: oracle hibernate jpa jdbc

我的设置: 我正在使用Hibernate 5 使用Oracle JDBC驱动程序oracle.jdbc.driver.OracleDriver和方言org.hibernate.dialect.Oracle9iDialect

我的模型类看起来像这样:

@Entity
@Table(name = "MyModel1", catalog = "DB1")
public class MyModel1 {...}

@Entity
@Table(name = "MyModel2", catalog = "DB2")
public class MyModel2 {...}

我的问题: 我有多个模型类,它们分布在同一个DBserver上的不同数据库中。 我必须使用单个DB连接来查询我的所有模型类,所以我连接到DB1进行查询。 如果Hibernate会生成像

这样的SQL查询,那么一切都会好的
select * from DB1.MyModel1;

但事实并非如此。由于某种原因,它在没有目录的情况下进行查询。

select * from MyModel1;

这对于MyModel1来说很好,因为我连接到DB1但是我需要MyModel2的完全限定查询,否则它会引发异常,因为在DB1中找不到MyModel2的表。

你知道如何用Hibernate或JPA或方言来构建具有完全限定表名的查询吗?

1 个答案:

答案 0 :(得分:1)

使用Oracle,您必须使用架构属性:

@Entity
@Table(name = "MyModel1", schema= "DB1")
public class MyModel1 {...}

@Entity
@Table(name = "MyModel2", schema= "DB2")
public class MyModel2 {...}