我搜索过这个,但找不到答案。我想我错过了一些明显的东西,或者我并不理解Hibernate。我有一个项目,可以访问超过100个表,所以我试图实现一个通用的DAO,它可以读取任何这些表并将结果输出到excel表。下面是我正在使用的代码的信息。
SQLQuery query = session.createSQLQuery("SELECT * FROM " + tables + " WHERE " + conditions );
List<Object[]> ob = query.list();
for(Object[] obj : ob ){
for(int x=0; x<obj.length; x++)
System.out.println("Col: " + obj[x].toString());}
然而,当我打印出对象时,我得到的只是表格中的第一个字符。
Col1 Col2 Col3
1 8 8
当实际值为:
Col1 Col2 Col3
135 800 867
我做错了什么,或者我完全误解了Hibernate的工作原理。
先谢谢。
JF
编辑我已经添加了用于输出对象的代码以及结果和实际的表数据。
答案 0 :(得分:0)
尝试使用以下方式打印:
for(Object[] obj : ob ){
System.out.println("Row: " + Arrays.toString(obj));
答案 1 :(得分:0)
好的,所以我发现了这个问题。
https://hibernate.atlassian.net/browse/HHH-2304
总结一下,在这里:
Hibernate native query - char(3) column
显示了一个解决方案。
对于那些想要摘要的人:
返回类型char(&gt; 1)时Hibernate存在问题,因此您必须添加标量或转换返回值才能获得完整值。