我真的不知道sql中有什么。
这是我的代码:
SQLQuery q=session.createSQLQuery("SELECT * FROM tbl WHERE id = 2");
q.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> aliasToValueMapList=q.list();
for(Map<String,Object> map : aliasToValueMapList){
System.out.println(map.keySet());
break;
}
我希望有人知道这个问题的解决方案。
格尔茨
答案 0 :(得分:3)
您的查询尝试返回JDBC ResultSetMetaData报告的类型(-102)的列,Hibernate不知道该如何读取。您需要使用org.hibernate.SQLQuery #addScalar在查询中注册该列的类型,否则您可能无法使用该转换器并实际定义映射到您的实体的整个结果集org.hibernate.SQLQuery #addRoot / org .hibernate.SQLQuery#addEntity。请参阅文档以了解用法
答案 1 :(得分:1)
如果使用session.createQuery(),这将使用您的方言使用Hibernate查询语言与数据库通信。但如果你使用createSQLQuery(),你必须使用PL / SQL与oracle交谈。