Java QueryDsl集合模式
使用SpringJava QueryDsl集合模式,java,spring,db2,h2,querydsl,Java,Spring,Db2,H2,Querydsl,使用SpringDataSource和QueryDslSQLQueryImpl,如何指定模式或设置模式 测试用例是: 使用querydsl maven插件(2.9.0)连接到DB2数据库,生成指定 Spring创建了一个DataSourcebean DataSourcebean由脚本填充(createschemafoo,createtablefoo.BAR等) JUnit测试导入数据源 使用新的SQLQueryImpl(dataSource.getConnection(),Configurati
DataSource
和QueryDslSQLQueryImpl
,如何指定模式或设置模式
测试用例是:
DataSource
beanDataSource
bean由脚本填充(createschemafoo
,createtablefoo.BAR
等)org.h2.jdbc.JdbcSQLException: Table "BAR" not found; SQL Statement: ...
请注意,此测试实现是一个H2数据库,但生产数据库是DB2。到目前为止,我已经尝试在JDBC连接字符串中指定模式,但没有效果。该模式在Q-types中编码。它在SQL序列化中通过RelationalPath接口访问我能够使用自己的实现扩展
SQLTemplates
,该实现称为受保护方法setPrintSchema(true)代码> com.mysema.query.sql.SQLTemplates
有一个名为printSchema()
的生成器方法。使用builder()
方法初始化SQLTemplates
,并在build()
之前调用printSchema()
。要遵循的示例:
SQLTemplates templates = OracleTemplates.builder().printSchema().build();
H2数据库的数据库URL是什么?数据库URL是jdbc:H2:mem:testdb
。我无法在连接URL中指定架构,因为该架构尚不存在。创建数据库后会调用ResourceDatabasePopular
,然后执行CREATE SCHEMA
语句。打开数据库URL时,可以使用INIT
功能创建架构(jdbc:h2:mem:test;INIT=CREATE SCHEMA IF NOT EXISTS…
)。是的,架构名称(FOO
)可通过getSchemaName()
访问,但生成的SQL不是完全限定的。应为:从FOO.BAR中选择COL1
。实际:从BAR中选择COL1
。