Hibernate通用列表和数据输出

Hibernate通用列表和数据输出,hibernate,generics,generic-list,Hibernate,Generics,Generic List,我已经找过了,但我找不到答案。我想我错过了一些明显的东西,或者我对Hibernate的理解不如我想象的那么好。我有一个可以访问100多个表的项目,因此我正在尝试实现一个通用DAO,它可以读取这些表中的任何一个,并将结果输出到excel表中。下面是我正在使用的代码片段 SQLQuery query = session.createSQLQuery("SELECT * FROM " + tables + " WHERE " + conditions ); List<Object[]> o

我已经找过了,但我找不到答案。我想我错过了一些明显的东西,或者我对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
 135   800   867
我是做错了什么,还是完全误解了Hibernate的工作原理

提前谢谢

JF

编辑已添加用于输出对象的代码以及结果和实际表格数据。

请尝试使用以下工具打印:

for(Object[] obj : ob ){   
    System.out.println("Row: " + Arrays.toString(obj));

好吧,我发现了问题所在

总结如下:

显示了一个解决方案

对于需要摘要的用户:


Hibernate在返回类型char(>1)时出现问题,因此必须添加标量或强制转换返回值才能获得完整值

表格的价值是什么?条件的价值是什么?如何显示结果以及显示的内容?表是它可以访问的众多表之一。这是用户输入的东西,与条件相同(我知道很危险)。对于快速测试,我只是在对象列表中迭代并打印出它的值(obj[x].toString()正是这个调用)。这并没有回答我的问题。给我们看看代码。让我们看看你得到的结果。我猜你得到的是[Ljava.lang.Object;@78308db1,对吗?编辑了原始数据并提供了更多信息。如果这不能回答您的问题,那么我很抱歉,因为我不理解您需要什么。我按照您的建议做了,收到了相同的问题。数据格式略有不同,但我仍然只得到表中每个值的第一个字符。请尝试使用plain JDBC语句。您可以使用session.doWork并执行该语句来检查实际选定的列值。因此,使用doWork可以为我提供每个列的完整值。但是,前面的SQL查询仍然只提供第一个char.session.doWork允许您执行JDBC,以便您可以确定是Hibernate还是只返回wron的DBg值。
for(Object[] obj : ob ){   
    System.out.println("Row: " + Arrays.toString(obj));