2

使用 SpringDataSource和 QueryDsl SQLQueryImpl,您如何指定架构或设置架构?

测试用例是:

  1. 使用 querydsl-maven-plugin (2.9.0) 连接到 DB2 数据库以生成 Q-Classes 指定<schemaPattern>
  2. Spring创建一个DataSourcebean
  3. DataSourcebean 由脚本(CREATE SCHEMA FOOCREATE TABLE FOO.BAR)填充
  4. JUnit 测试导入DataSource
  5. 查询使用new SQLQueryImpl(dataSource.getConnection(), Configuration.DEFAULT)

错误:

org.h2.jdbc.JdbcSQLException: Table "BAR" not found; SQL Statement: ...

请注意,这个测试实现是一个 H2 数据库,但生产数据库是 DB2。到目前为止,我尝试在 JDBC 连接字符串中指定模式无济于事。

4

3 回答 3

4

com.mysema.query.sql.SQLTemplates有一个名为printSchema(). SQLTemplates使用方法初始化builder()并调用printSchema()before build()。要遵循的示例:

SQLTemplates templates = OracleTemplates.builder().printSchema().build();
于 2014-04-07T09:10:08.100 回答
2

Schema 以 Q 类型编码。它通过 RelationalPath 接口在 SQL 序列化中访问http://www.querydsl.com/static/querydsl/2.9.0/apidocs/com/mysema/query/sql/RelationalPath.html

于 2013-01-11T07:37:07.697 回答
1

我能够SQLTemplates使用自己的实现进行扩展,该实现称为受保护的方法setPrintSchema(true);

于 2013-01-14T19:51:45.483 回答