Hibernate, Postgres & Type de Tableau de
Je suis bloqué sur une question spécifique à l'aide de de type tableau dans postgresql 9.3 mappé avec hibernate 4.1.0.
Ce type me permet d'avoir vraiment solide modèle de données, sans mettre beaucoup de tables et jointures.
Afin de cartographier un champ stocké avec ce type particulier, j'ai utilisé un UserType
De toute façon, il fonctionne bien avec de la pure mise en veille prolongée (hql) mais j'ai besoin aussi d'envoyer natif sql de la requête à ma base de données. Quand je le fais, en dépit de nombreuses tentatives, je n'ai pas trouvé de moyen de le faire.
J'ai essayer de nombreuses syntaxes basé sur ce
String[] values = {"value1", "value2"};
String queryString = "SELECT * FROM instances WHERE values && :values";
Query query = this.getSession().createSQLQuery(queryString).addEntity(Instance.class);
query.setParameterList("values", values);
query.list();
J'ai eu
L'opérateur n'existe pas : texte[] && character varying
Donner la syntaxe suivante dans jdbc : ['valeur1', 'valeur2'] et il semble donner 'value1'...
J'ai essayé plusieurs syntaxes
avec
- Collection
- Pur Tableaux
- [valeurs ] syntaxe : j'ai eu
Erreur de syntaxe près de "["
J'ai besoin d'envoyer de requête native parce que je utiliser Vue Matérialisée pour des gains de performance.
Ma Requête SQL fonctionne dans postgresql console. Donc, c'est une hibernate problème spécifique.
OriginalL'auteur Damien C | 2014-02-21
Vous devez vous connecter pour publier un commentaire.
J'ai essayé plusieurs versions basées sur le Type de Tableau présenté par JDBC4 : Comment puis-je mettre un String[] paramètre d'une requête native?. Le problème est également mise en veille prolongée (même dans la dernière version 4.3.1.final) ne fonctionne pas avec cette nouvelle fonctionnalités et m'a donné de message d'erreur suivant
J'ai donc dû faire un Spécifique UserType (basé sur plusieurs articles dans stackoverflow, et d'autres sources)
Mon Modèle
Mon
ArrayUserType
}
Et le dernier, mais moins (c'est ce que j'ai raté) : quand j'en ai besoin pour exécuter SQL Natif de Requête, je dois forcer le type de paramètre avec la syntaxe suivante
Quelle est la licence de ce code? Je veux l'utiliser dans un GPL app.
Jamais l'esprit, je vais probablement ré-écrire à l'aide de CompositeUserType et ParameterizedType.
Je dirais BSD ... 😉 Pas de soucis
Tous les code sur stackoverflow est automatiquement CC BY-SA 3.0; voir stackexchange.com/legal
OriginalL'auteur Damien C