À l'aide de @Tableau avec le nom du schéma dans Hibernate 3.3.1 ga et HSQLDB
Comment puis-je faire ce travail dans les tests unitaires en utilisant Hibernate 3.3.1 ga et HSQLDB:
@Entity
@Table(name="CATEGORY", schema="TEST")
public static class Category { ... }
Le problème est que Hibernate s'attend à ce que le schéma d'exister. Le deuxième problème est que Hibernate questions de la CREATE TABLE TEST.CATEGORY
avant tout de mon code fonctionne (ce qui arrive profondément à l'intérieur de Printemps de la configuration de test), donc je ne peux pas obtenir une connexion à la DB avant d'Hiberner et de créer le schéma manuellement.
Mais j'ai besoin du schéma parce que j'ai accès à différentes bases de données dans le code réel. Que dois-je faire?
Hibernate 3.3.1 ga, HSQLDB, Spring 2.5
Vous devez vous connecter pour publier un commentaire.
Vous pourriez écrire une classe qui implémente InitializingBean:
Vous devez ensuite définir un bean dans votre bean fichier de définition de cette classe (je suis en prendre un coup dans l'obscurité quant à ce que votre bean définitions ressembler).
À l'aide de la
dépend-on
attribut de Hibernate bean, le Printemps sera de s'assurer que leschemaCreator
bean sera initialisé première, provoquant le schéma d'exister juste à temps. Cela devrait également faire vos intentions claires.Ma solution actuelle ressemble à ceci:
mais qui se sent vraiment comme un vilain hack. N'est-il pas une meilleure solution?
Ci-dessous est un exemple de comment vous pouvez créer de printemps config avec le test de hslqdb
Il détecte automatiquement tous vos schémas de @Table(schéma =...) et crée pour vous.
Si c'est juste pour le test qui devrait fonctionner pour vous:
Et voici un échantillon de test:
Il me semble que vous avez un bug reproductible dans le Hibernate DDL code de création. Vous devriez signaler un bug - il une solution à long terme mais c'est la manière de faire les choses dans l'open source. Bien sûr, vous pourriez produire un patch, mais je n'ai jamais trouvé le code Hibernate de base facile à pirater.
J'ai rencontré le même problème où MS SQL Server veut le catalogue et le schéma défini, mais HSQLDB ne le fait pas. Ma solution a été de charger un personnalisé orm.xml fichier (via persistence.xml) spécifiquement pour MS SQL Server qui définit le catalogue et le schéma.
1.Spécifiez uniquement le @nom de la Table (omettre aucun catalogue ou des informations de schéma) pour votre entité:
2.Spécifier deux persistence-unit des noeuds dans votre META-INF/persistence.xml fichier
3.Spécifiez le catalogue par défaut et le schéma dans le orm-mssql.xml fichier:
4.Je suis l'aide de Printemps pour configurer JPA, donc j'utilise une propriété de l'espace réservé pour la valeur de la persistenceUnitName:
Pour les tests unitaires, l'utilisation de 'com.mycompany.des tests et de l'intégration-tests/déploiements de production, de l'utilisation 'de com.mycompany.prod'.