java.sql.SQLException:无法转换为内部表示

Ket*_*Ket 34 jpql

我正在尝试执行以下查询:

String query = "select entity, entity.id from Site entity";
List resultList = entityManager.createQuery(query).getResultList();
Run Code Online (Sandbox Code Playgroud)

并且例外:

[...]
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
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?先感谢您.

小智 82

检索字段值时,您的数据类型不匹配.检查代码并确保对于要检索的每个字段,java对象与该类型匹配.例如,检索日期和int.如果您正在执行select*,则可能会更改表的字段,从而导致发生此错误.您的SQL应该只选择您特别需要的字段以避免此错误.

希望这可以帮助.

  • 谢谢你+1的答案......为什么不被接受? (7认同)

Bla*_*Kat 14

检查您的实体类.使用String而不是Long,而不是double.