想在jfinal调用存储过程,代码如下:
Db.execute(new ICallback() {
public Object call(Connection conn) throws SQLException {
List<TBItemLibrary> itemTree = new ArrayList<TBItemLibrary>();
Object[] objs = null;
TBItemLibrary item = null;
String sql = "call get_item_library_tree_proc(?,?)";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, item_library_id);
cstmt.registerOutParameter(2,OracleTypes.ARRAY,"TYPE_ITEM_LIST");
cstmt.execute();
Object[] obj = (Object[])cstmt.getArray(2).getArray();
if(null != obj){
for(Object o:obj){
objs = ((STRUCT)o).getAttributes();
item = new TBItemLibrary();
//此处打印返回结果集的其中一个字段的字符结果
System.out.println((String)objs[0]);
item.setId((String)objs[0]);
item.setName((String)objs[1]);
item.setDepth((BigDecimal)objs[2]);
item.setIsDelete((String)objs[3]);
item.setCreator((String)objs[6]);
item.setUpdator((String)objs[7]);
item.setIsScoring((String)objs[8]);
item.setLibDefId((String)objs[9]);
item.setDepthDefId((String)objs[10]);
itemTree.add(item);
}
}
return itemTree;
}
});
在后台打印出来的结果:
???
???
???
???
???
???
???
???
???
???
返回的结果集里面,关于字符类型varchar2的无论中英文都是3个?,如上所示。时间类型date和整型没有出现问题,只是上面实例没打印出来。数据库的字符集是GBK
查询资料后怀疑是jdbc处理结果字符集有问题,但是jfinal自己的activeRecord查询是没问题的。请问出现这个问题的原因是什么呢?jfinal有没有好的解决办法?