应用程序使用 Spring 和 Hibernate。
是否可以更改dblink ,在Java中执行sql查询之前?是原生 JDBC 还是 Hibernate?
我知道这是可能的
refer to a table or view on the other database by appending @dblink to the table or view name
但我不能这样做,因为 sql 查询是由用户编写的,我无法控制它(解析它太复杂)。
上面的代码显示了我正在尝试做的事情...
// TODO connect to the db link ???
List<Object> results = this.getSession().doReturningWork(new ReturningWork<Object>(){
@Override
public String execute(Connection connection) throws SQLException
{
final ResultSet rs = connection.createStatement().executeQuery(userQuery);
// doing something with results....
}
});
最佳答案
您可以在架构中创建引用其他数据库上的表的同义词:
CREATE OR REPLACE SYNONYM "SOURCE_SCHEMA"."SYNONYM_NAME" FOR "TARGET_SCHEMA"."TARGET_TABLE"@"DBLINK"
这样您就可以通过同义词名称访问外部表,从而使您无法了解对象的确切物理位置:
SELECT * FROM SYNONYM_NAME
如果您想使用 Hibernate 映射此实体,您将像任何其他对象一样使用同义词名称。
关于java - 如何在java中执行sql查询之前更改数据库链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33696289/