java.sql.SQLException: не удалось преобразовать во внутреннее представление - PullRequest
32 голосов
/ 11 мая 2011

Я пытаюсь выполнить следующий запрос:

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

И возьмем исключение:

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

Что я делаю не так? Заранее спасибо.

Ответы [ 4 ]

80 голосов
/ 10 ноября 2012

Ваши типы данных не совпадают, когда вы получаете значения полей. Проверьте свой код и убедитесь, что для каждого поля, которое вы извлекаете, java-объект соответствует этому типу. Например, получение даты в и int. Если вы делаете выбор *, то возможно, что произошло изменение полей таблицы, что привело к возникновению этой ошибки. Ваш SQL должен выбирать только те поля, которые вам нужны, чтобы избежать этой ошибки.

Надеюсь, это поможет.

11 голосов
/ 18 марта 2013

Проверьте свой класс сущности. Используйте String вместо Long и float вместо double.

1 голос
/ 22 августа 2017

У меня была такая же проблема, и это мое решение. У меня был следующий код:

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

И я изменил его на:

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

И проблема была в том, что после перезагрузки компьютера положение столбцов изменилось. Вот почему я получил эту ошибку.

0 голосов
/ 19 января 2018

Проверьте с вашим классом бобов. Тип данных столбца и тип данных компонента должны быть одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...