Problème d'incompatibilité de la colonne TEXT postgresql / hsqldb Hibernate
J'ai un problème de l'utilisation d'Hibernate et PostgreSQL pour la production et la HSQLDB pour les tests.
Je suis à l'aide de l'approche top-down de laisser Hibernate créer schéma de base de données.
Je suis également à l'aide d'annotations; partie de la cartographie de hibernate.cfg.xml ne contient que des lignes comme
<mapping class="package.subpackage.ClassName" />
Hibernate valeurs par défaut des variables de Chaîne de caractère variable(255) sur PostgreSQL, ce qui n'est pas suffisant pour moi, dans certains cas, j'ai donc de redéfinir certaines colonnes manuellement à l'aide
@Column(columnDefinition = "TEXT")
.
Mais, ce type de TEXTE n'est pas valide pour HSQLDB, de sorte que ces tableaux ne peut pas être créé.
Quelqu'un peut-il aider à résoudre ce problème?
source d'informationauteur Nemanja
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de traiter cette question en particulier est probablement de ne pas utiliser le columnDefinition à tous et au lieu de spécifier explicitement la longueur de la colonne (par exemple)
Il pourrait également être que vous pourriez au lieu de la carte avec
@Lob(type = LobType.CLOB)
mais je ne suis pas sûr que ce soit pris en charge correctement dans HSQLDB. Dans Postgres, il doit vous donner votre type de TEXTE.
D'accord avec @fredt.
Type de données TEXTE n'est pas standard de type SQL, mais l'extension que certains moteur prend en charge.
Pour permettre PostgreSQL en mode de compatibilité utilisation
sql.syntax_pgs=true
dans vos paramètres de connexion.HSQLDB 2.1 et plus tard a un PostgreSQL en mode de compatibilité et prend en charge le type de données TEXTE dans ce mode.
Pour obtenir H2 pour travailler en mode de compatibilité avec PostgreSQL (utile pour les tests junit).
Create table PG_CLASS est nécessaire pour permettre à Hibernate/JPA pour fonctionner correctement. Mais d'autres que - assez transparente.
Oui, vous avez un vraiment grand problème.
NE PAS UTILISER UN MOTEUR DE BASE DE DONNÉES POUR LES TESTS, ET UN AUTRE POUR LA PRODUCTION.
Vous pouvez frapper sur les problèmes que vous avez jamais rêvé.