J'utilise hibernate avec mySQL et j'ai le problème suivant: Je fais une requête nativeSQL sur une table avec, entre autres, une colonne qui est longue. Cette colonne peut atteindre null. Maintenant, je reçois l'exception suivante lors de la demande:Hibernate, valeurs nulles et nativeSQL
4-feb-2010 10.31.00 org.hibernate.type.NullableType nullSafeGet
INFO: could not read column value from result set: nazeuro; String index out of range: 0
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:686)
at org.hibernate.type.CharacterType.get(CharacterType.java:29)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:189)
at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.extract(CustomLoader.java:474)
at org.hibernate.loader.custom.CustomLoader$ResultRowProcessor.buildResultRow(CustomLoader.java:420)
at org.hibernate.loader.custom.CustomLoader.getResultColumnOrRow(CustomLoader.java:317)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:606)
at org.hibernate.loader.Loader.doQuery(Loader.java:701)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
at Views.Components.QuickLookup$updater.run(QuickLookup.java:102)
J'ai été googler pour résoudre le problème, j'ai même trouvé les messages ici sur le SO, mais à chaque fois qu'il est sur le mappage des objets et de l'écriture des classes personnalisées pour gérer la question . Dans cette situation, j'ai besoin d'un tableau Object. Je sais qu'une solution pourrait être de changer la table mais je l'éviterais car je dois travailler avec un db préexistant. Avez-vous des solutions possibles?
SQLQuery query = sess.createSQLQuery("SELECT * from " + table + " WHERE " + filter + " LIKE '" + search + "%'");
System.out.println(query.toString());
List<Object[]> result = query.list();
Ainsi, la colonne est CHAR (1) '? Et quel est le type dans votre entité? S'il vous plaît montrer votre code. – Henning
Il n'y a pas de type dans mon entité, en fait c'est une requête SQL NATIVE, qui retournera un Object [] par ligne (un objet par colonne). Donc il n'y a pas d'entité ... – gotch4
Nous avons besoin de voir votre code en particulier le mappage Hibernate – Mark