金杯独酒 2016-08-29 10:02 采纳率: 0%
浏览 1418

hibernate 中sql语句返回值接收的问题

public class ReportInfo  implements Serializable{
        /**返回报表持久化类*/
/** 此结果集应为   data表,人员表,部门表,系统表*/
/** 此结果集是报表显示的基本数据集*/
/** 
    data_id  数据表ID
    data_time  数据日期
    data_e_id 人员ID
    data_data 数据信息
    e_No 人员工号
    e_name 人员姓名
    data_d_id 部门ID
    d_name 部门名称
    s_id 系统ID
    s_name 系统名称   
  */

private Integer data_id;
private String data_time;
private Integer data_e_id;
private String data_data;
private String e_No;
private String e_name;
private Integer d_id;
private String d_name;
private Integer s_id;
private String s_name;

/**  dao层代码*/
/** 根据日期查询日报信息 */
public List selectForDataInfo(String string) {
ReportInfo  reportInfo =null;

    /** 通过getHibernateTemplate()获取Session*/
    Session currentSession = this.getHibernateTemplate()
            .getSessionFactory().getCurrentSession();
    Transaction transaction = currentSession.beginTransaction();
    /**此处sql 大意是根据s_table 表 left join 了四次*/
    String SQL = "SELECT info.data_id,info.data_time,info.data_e_id,info.data_data,e.e_No,e.e_name,d.d_id,d.d_name,s.s_id,s.s_name FROM s_table s LEFT JOIN d_table d ON s.d_id= d.d_id LEFT JOIN datainfo_table info ON  s.s_id = info.data_s_id AND info.data_time LIKE '%"+string+"%' LEFT JOIN e_table e ON info.data_s_id=e.e_id";
    //SELECT aaa.data_id,aaa.data_time,aaa.data_e_id,aaa.data_data,aaa.e_No,aaa.e_name,s.d_id,aaa.d_name,s.s_id,s.s_name FROM s_table s LEFT JOIN (SELECT df.data_id,df.data_time,df.data_d_id,df.data_data,df.data_s_id,df.data_e_id,e.e_No,e.e_name,d.d_name,s.s_id,s.s_name  FROM datainfo_table df,d_table d,e_table e,s_table s WHERE df.data_e_id=e.e_id AND df.data_d_id = d.d_id  AND df.data_s_id=s.s_id AND df.data_time LIKE '%2016-08-28%' ) aaa ON aaa.s_id =s.s_id;
    //SELECT aaa.data_id data_id,aaa.data_time,aaa.data_e_id,aaa.data_data,aaa.e_No,aaa.e_name,s.d_id,aaa.d_name,s.s_id,s.s_name FROM s_table s LEFT JOIN (SELECT df.data_id,df.data_time,df.data_d_id,df.data_data,df.data_s_id,df.data_e_id,e.e_No,e.e_name,d.d_name,s.s_id,s.s_name  FROM datainfo_table df,d_table d,e_table e,s_table s WHERE df.data_e_id=e.e_id AND df.data_d_id = d.d_id  AND df.data_s_id=s.s_id AND df.data_time LIKE '%"+string+"%' ) aaa ON aaa.s_id =s.s_id;
    /** 通过Session.createSQLQuery(SQL)方法,可以使用SQL语句*/
    /** addEntity(ReportInfo.class)方法指明结果集用哪个持久化类接收*/
    /** 此持久化类在数据库表中的体现一直为null,只用于接收结果用*/
    SQLQuery createSQLQuery = currentSession.createSQLQuery(SQL).addEntity(ReportInfo.class);
    List<ReportInfo> lists =createSQLQuery.list();
    for(ReportInfo rt:lists){
        System.out.println(rt+"66666");
    }
    transaction.commit();
    return lists;

}

sql执行正确,但是返回值ReportInfo只有4个字段有值。大神帮忙看看。

  • 写回答

2条回答 默认 最新

  • devmiao 2017-02-08 20:49
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件