Rya*_*yan 6 java hibernate jpa
我正在努力将我的JPA持久性提供程序从EclipseLink 2.3切换到Hibernate 3.6.5.Final.问题在于本机查询.注意:这不是EclipseLink的问题.我正在尝试String从我没有声明实体的表中获取标量值.这是代码:
Query q = em.createNativeQuery("select description from foo where foo_id = ?");
q.setParameter(1, fooId);
String description = (String)q.getSingleResult();
Run Code Online (Sandbox Code Playgroud)
使用Hibernate我得到一个ClassCastException因为返回的对象实际上是一个代理对象.我不知道它是什么类型,但我知道它不是一个数组(object.getClass().isArray()是假的),我知道它不是一个List(object instanceof List是false).
我错过了什么?
总结问题下方的评论:
q.getSingleResult().getClass().getInterfaces()返回什么接口?
这类型的
java.sql.Clob,org.hibernate.engine.jdbc.WrappedClob和java.io.Serializable。[...]我什至没有意识到该列是Clob,我很惊讶EclipseLink为我执行了到String的转换
看起来EclipseLink足够聪明,可以根据需要将CLOB(实际上是一个很长的字符序列,就像一样String)转换为String。使用Hibernate必须明确地做到这一点。我猜这符合JPA规范。
| 归档时间: |
|
| 查看次数: |
2017 次 |
| 最近记录: |