it-swarm.com.de

java.sql.SQLException: Konvertierung in interne Darstellung fehlgeschlagen

Ich versuche folgende Abfrage auszuführen: 

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

Und Ausnahme machen:

[...]
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

Was mache ich falsch? Vielen Dank im Voraus.

28
Ket

Ihre Datentypen stimmen nicht überein, wenn Sie die Feldwerte abrufen. Überprüfen Sie Ihren Code und stellen Sie sicher, dass das Java-Objekt für jedes Feld, das Sie abrufen, diesem Typ entspricht. Zum Beispiel das Abrufen eines Datums in und int. Wenn Sie ein select * ausführen, ist es möglich, dass in den Feldern der Tabelle eine Änderung aufgetreten ist, die diesen Fehler verursacht. Ihr SQL sollte nur die Felder auswählen, die Sie speziell möchten, um diesen Fehler zu vermeiden.

Hoffe das hilft.

73
Ashish

Überprüfen Sie Ihre Entity-Klasse. Verwenden Sie String anstelle von Long und Float statt Double.

10
BlackKat

Ich hatte das gleiche Problem und das ist meine Lösung. Ich hatte folgenden Code:

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

Und ich habe es geändert in:

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

Und das Problem war, nachdem ich meinen PC neu gestartet hatte, veränderten sich die Säulenpositionen. Deshalb habe ich diesen Fehler bekommen.

Erkundigen Sie sich bei Ihrer Bean-Klasse . Spaltendatentyp und Bean-Datentyp müssen identisch sein.

0
Sudha Susarita