En utilisant un ressort DataSource
et un QueryDsl SQLQueryImpl
, comment spécifier le schéma ou définir le schéma?QueryDsl Set Schema
cas de test est la suivante:
- utilisation querydsl-maven-plugin (2.9.0) pour se connecter à la base de données DB2 pour générer Q-classes spécifiant
<schemaPattern>
- Spring crée un
DataSource
haricot DataSource
haricot est peuplé par des scripts (CREATE SCHEMA FOO
,CREATE TABLE FOO.BAR
etc)- importations de test JUnit
DataSource
- requête en utilisant
new SQLQueryImpl(dataSource.getConnection(), Configuration.DEFAULT)
Erreur:
org.h2.jdbc.JdbcSQLException: Table "BAR" not found; SQL Statement: ...
Notez que cette implémentation de test est une base de données de H2, mais la base de données de production est DB2. Jusqu'à présent, j'ai essayé de spécifier le schéma dans les chaînes de connexion JDBC en vain.
Quelle est l'URL de votre base de données pour la base de données H2? –
L'URL de base de données est 'jdbc: h2: mem: testdb'. Je ne peux pas spécifier le schéma dans l'URL de connexion car le schéma n'existe pas encore. Le 'ResourceDatabasePopular' est appelé après la création de la base de données, et les instructions' CREATE SCHEMA' sont exécutées après cela. –
Vous pouvez utiliser la fonctionnalité 'INIT' pour créer le schéma lors de l'ouverture de l'URL de la base de données (' jdbc: h2: mem: test; INIT = CREER SCHEMA SI NON EXISTE ... '). –