Java.SQL.SQLException: échec de conversion à la représentation interne

j'essaie d'exécuter la requête suivante:

String query = "select entity, entity.id from Site entity";
List resultList = entityManager.createQuery(query).getResultList();

Et de prendre l'exception:

[...]
Caused by: java.sql.SQLException: Fail to convert to internal representation
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
    at oracle.jdbc.driver.CharCommonAccessor.getLong(CharCommonAccessor.java:239)
    at oracle.jdbc.driver.OracleResultSetImpl.getLong(OracleResultSetImpl.java:552)
    at oracle.jdbc.driver.OracleResultSet.getLong(OracleResultSet.java:1575)
    at org.jboss.resource.adapter.jdbc.WrappedResultSet.getLong(WrappedResultSet.java:724)
    at org.hibernate.type.LongType.get(LongType.java:28)
    at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
    at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:154)
    at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:103)
    at org.hibernate.type.EntityType.nullSafeGet(EntityType.java:204)
    at org.hibernate.loader.hql.QueryLoader.getResultColumnOrRow(QueryLoader.java:338)
    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)
    ... 102 more

Ce que je fais mal? Je vous remercie à l'avance.

26
demandé sur ᴳᵁᴵᴰᴼ 2011-05-11 15:29:19

4 réponses

vos types de données sont mal appariés lorsque vous récupérez les valeurs des champs. Vérifiez votre code et assurez-vous que pour chaque champ que vous récupérez, l'objet java correspond à ce type. Par exemple, récupérer une date dans et int. Si vous faites un select * alors il est possible qu'un changement dans les champs de la table se soit produit provoquant cette erreur. Votre SQL ne doit sélectionner que les champs que vous voulez spécifiquement afin d'éviter cette erreur.

J'espère que cela vous aidera.

68
répondu Ashish 2012-11-10 09:06:48

Vérifiez votre classe Entity. Utilisez String au lieu de Long et flotter au lieu de double .

8
répondu BlackKat 2018-08-17 10:39:51

j'ai eu le même problème et c'est ma solution. J'ai eu le code suivant:

se.GiftDescription = rs.getString(1);
se.GiftAmount = rs.getInt(2);

Et je l'ai changé pour:

se.GiftDescription = rs.getString("DESCRIPTION");
se.GiftAmount = rs.getInt("AMOUNT");

et le problème était, après que j'ai redémarré mon PC, les positions de colonne ont changé. C'est pourquoi j'ai eu cette erreur.

1
répondu abdulsamed kayaduman 2018-01-19 07:16:25

Vérifiez avec votre classe de haricots. Le type de données de la colonne et le type de données du haricot doivent être les mêmes.

0
répondu Sudha Susarita 2018-01-19 06:46:01