当前位置: 代码迷 >> J2EE >> json 返回 持久化对象 hibernate 设置了赖加载,该如何解决
  详细解决方案

json 返回 持久化对象 hibernate 设置了赖加载,该如何解决

热度:632   发布时间:2016-04-22 01:52:13.0
json 返回 持久化对象 hibernate 设置了赖加载
我返回一个持久化实体 因为设置了延迟加载 ,所以返回到前台后 有的2级属性没有 
因为代码很多不想修改配置文件
而且也不想在service 把需要的属性取出 放到DTO中再返回前台(配了OnpenSessioninView) 因为实在太他妈的多了
json转换工具 用的是 Gson 各位有没有什么好办法

------解决方案--------------------
直接用JDBC:

Java code
    public String selectSingleLineToJson(String sql) {// 查询数据,返回String,再组合成json        try {            statement = connection.createStatement();            resultSet = statement.executeQuery(sql);            ResultSetMetaData rsmd = resultSet.getMetaData();// 计算字段个数            int col = rsmd.getColumnCount(); // 获得总列数            String selectItems[] = new String[col];// 创建对象,存储结果,以返回            resultSet.next();            StringBuilder sb = new StringBuilder("{");            for (int j = 0; j < col; j++)                sb.append("\"" + rsmd.getColumnName(j + 1) + "\":\""                        + resultSet.getString(j + 1) + "\",");            sb.delete(sb.length() - 1, sb.length());            sb.append("}");            resultSet.close();            return sb.toString();        } catch (SQLException e) {            e.printStackTrace();        }        return "{\"flag\":\"false\"}";// 出错处理    }    public String selectMultiLineToJson(String sql) {// 查询数据,返回多个String数组,再组合成json数组        try {            statement = connection.createStatement();            resultSet = statement.executeQuery(sql);            ResultSetMetaData rsmd = resultSet.getMetaData();//            int col = rsmd.getColumnCount(); // 获得总列数            StringBuilder sb = new StringBuilder("[");            for (int i = 0; resultSet.next(); i++) {                sb.append("{");                for (int j = 0; j < col; j++)                    sb.append("\"" + rsmd.getColumnName(j + 1) + "\":\""                            + resultSet.getString(j + 1) + "\",");                sb.delete(sb.length() - 1, sb.length());                sb.append("},");            }            sb.delete(sb.length() - 1, sb.length());            if (sb.toString().equals(""))                return "[{\"flag\":\"false\"}]";// 结果为空,出错处理;            sb.append("]");            resultSet.close();            //System.out.println(sb.toString());            return sb.toString();        } catch (SQLException e) {            e.printStackTrace();        }        return "[{\"flag\":\"false\"}]";// 出错处理    }
------解决方案--------------------
gson可能是最好的了,毕竟是google搞得吗。

持久化的时候,直接持久化json字符串不久得了,Parse是个很快的过程。
------解决方案--------------------
我们用的是flexJson,听说好用,可以试试
  相关解决方案