hibernate grammar exception (renommé avec mon 3e post) - Java - Programmation
Marsh Posté le 26-04-2008 à 21:43:17
La façon clean, c'est de ne pas faire directement du JDBC mais de passer par un framework ORM style Hibernate.
Marsh Posté le 26-04-2008 à 21:48:13
ouais jai l'intention d'utiliser Hibernate ou iBatis dans un avenir prochain mais pour le moment, j'y vais plus par développement itératif. Je fais pas souvent de java et je suis pas mal rouiller dans les mutliples patterns alors j'aimerais débuter sans ceux-ci puisque je ne les connais pas encore
Marsh Posté le 27-04-2008 à 04:48:51
bon finalement je fais un petit tuto hibernate et je vois que c'est pas trop compliqué
apres avoir réglé plusieurs erreurs, on dirait que hibernate que génère un insert invalide
Code :
|
Code :
|
devrait pas y avoir des "" ou '' autour de ma string "NHL" dans le insert?
Marsh Posté le 27-04-2008 à 18:32:13
je crois que le probleme vient de ma DB postgresql mais je trouve pas le correctif nécessaire
j'ai 1 sequence et 1 table, la table ayant 1 integer et 1 character varying
dans mes logs de db:
2008-04-27 11:18:12 EDT LOG: loaded library "$libdir/plugins/plugin_debugger.dll"
2008-04-27 11:18:14 EDT ERROR: relation "league" does not exist
2008-04-27 11:18:14 EDT STATEMENT: insert into LEAGUE (LEAGUE_NAME, LEAGUE_ID) values ($1, $2)
Marsh Posté le 27-04-2008 à 19:08:32
Je doute que ton PostgreSQL soit en cause si tu as récupéré une version officielle.
Par contre, LEAGUE_ID est probablement une séquence incrémentée automatiquement par Hibernate. Quand je lis ton XML de mapping (en toute honnêteté, je ne connais pas Hibernate, mais c'est ce que j'utiliserais), je comprends que LEAGUE_ID est un id qui est géré comme une séquence, voire une clef primaire, par Hibernate.
Par conséquent, si ce que je soupçonne est correct, il ne faut pas passer de valeur pour LEAGUE_ID dans ta requête, Postgres doit gérer cela de façon transparente. En fait, les id ne doivent pas apparaitre dans tes insert. Ou alors tu voulais faire un update et pas un insert.
Au passage, si tu fais du Java 5 (1.5) et non du Java 2 (1.4.2), tu as tout intérêt à utiliser les annotations plutôt que des fichiers XML.
Marsh Posté le 27-04-2008 à 20:01:31
ok cétait une question de case sensitive
quand j'avais mon mapping en majuscule et mes champs dans ma DB en majuscule, ca fonctionnait pas
jai tout mis en minuscule et maintenant ca passe
Marsh Posté le 27-04-2008 à 20:03:05
el muchacho a écrit : |
Java 6
les tuto disait d'utiliser les xml plutot que les properties, jvais regarder ce qu'est un annotation pour voir, merci du conseil
Marsh Posté le 27-04-2008 à 20:54:09
burgergold a écrit : ok cétait une question de case sensitive jai tout mis en minuscule et maintenant ca passe |
Tiens, curieux, sachant que le SQL est case insensitive. Et tu passes quand même une valeur pour le league_id ? Que se passe-t'il si tu l'enlèves ?
Marsh Posté le 27-04-2008 à 21:15:05
non je passe pas de valeur pour league_id
dans mon mapping de la table, j'associe mon league_id avec une sequence (sequence_league_id) qui est défini dans postgresql pour etre auto-increment
Marsh Posté le 27-04-2008 à 22:06:45
Reply
Marsh Posté le 26-04-2008 à 21:30:54
je cherche la facon "clean" de créer ma méthode createConnection. D'un coté, eclipse me dit dans ma classe PostgreSQLDAOFactory de pas la mettre static alors que dans un DAO quelconque où j'ai besoin d'une connection, ca me demande de la mettre static. Je suis donc pris dans ce cercle vicieux sans savoir la bonne facon de le faire
Message édité par burgergold le 27-04-2008 à 04:50:03