web-dev-qa-db-fra.com

java.sql.SQLException: Echec de la conversion en 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 prenez 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

Qu'est-ce que je fais mal? Merci d'avance.

28
Ket

Vos types de données ne correspondent pas lorsque vous récupérez les valeurs de champ. Vérifiez votre code et assurez-vous que l'objet Java correspond à ce type pour chaque champ que vous récupérez. Par exemple, récupérer une date dans et int. Si vous effectuez une sélection *, il est possible qu'un changement dans les champs de la table soit survenu, entraînant la survenue de cette erreur. Votre code SQL ne doit sélectionner que les champs que vous souhaitez spécifiquement afin d'éviter cette erreur.

J'espère que cela t'aides.

73
Ashish

Vérifiez votre classe d'entité. Utilisez String au lieu de Long et float au lieu de double.

10
BlackKat

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 que, après le redémarrage de mon PC, les positions des colonnes ont changé. C'est pourquoi j'ai eu cette erreur.

1

Vérifiez auprès de votre classe de bean . Le type de données de colonne et le type de données de bean doivent être identiques.

0
Sudha Susarita