SSH的getHibernateTemplate().find()返回null,代码无错,不知如何解决?请高手指点!谢谢!

解决方案 »

  1.   

    getHibernateTemplate().find()参数是什么?应该返回什么?整个方法呢?全贴出来会好看点
      

  2.   

    贴下代码吧 返回null估计机会可能不大(不是空List么? 我不知道这个是咋回事哦..)
      

  3.   

    public List getEmail(String sqlWhere){
    List list=null;
    try{
    String hql="SELECT e.email_id,e.email_title FROM models.Email e WHERE "+sqlWhere+"";
    list=(List)this.getHibernateTemplate().find(hql);
    if(list!=null&&list.size()>0){
    return list;
    }else{
    return null;
    }
    }catch(DataAccessException e){
     e.printStackTrace();
     return null;
    }
    }
      

  4.   

    这是Action
    public ActionForward execute(ActionMapping mapping,ActionForm form,
    HttpServletRequest request,HttpServletResponse response){

    HttpSession session=request.getSession();
    String sqlWhere="1=1";
    if(request.getParameter("important")!=null){
    int important=Integer.parseInt((String)request.getParameter("important"));
    sqlWhere+=" AND e.email_important="+important+"";
    }
    if(request.getParameter("keyword")!=null){
    String keyword=(String)request.getParameter("keyword");
    sqlWhere+=" AND e.email_title like '%"+keyword+"%'";
    }
    List list=(List)emailService.getEmail(sqlWhere);
    if(list!=null&&list.size()>0){
    request.setAttribute("emailList", list);
    return mapping.findForward("ok");
    }else{
    return mapping.findForward("err");
    }
    }返回总是NULL,数据库中有值!
      

  5.   

    你的标题写的是find返回null 大家可能都被你误导了..先确认问题出在哪里吧 估计是HQL语句的问题 既然你数据库里有值 你可先把查询条件拿掉 看看他能查询出来不 
      

  6.   

    String hql="SELECT e.email_id,e.email_title FROM models.Email e WHERE "+sqlWhere+""; 应该大写 吧
      

  7.   

    SELECT e.email_id,e.email_title FROM models.Email e WHERE "+sqlWhere+""
    这个代码有问题吗?models.Email  这个应该不用带包名吧,我不知道带包名会不会错
      

  8.   

    你把你的pojo类贴出来看一下,怀疑你的字段写错了
      

  9.   

    package models;public class Email { private int email_id;
    private int email_sid;
    private int email_rid;
    private String email_title;
    private String email_content;
    private String email_sDate;
    private int email_important;
    private String email_file;
    private int email_isRead;
    private String email_lastDate="";
    private int email_ok;
    public int getEmail_id() {
    return email_id;
    }
    public void setEmail_id(int email_id) {
    this.email_id = email_id;
    }
    public int getEmail_sid() {
    return email_sid;
    }
    public void setEmail_sid(int email_sid) {
    this.email_sid = email_sid;
    }
    public int getEmail_rid() {
    return email_rid;
    }
    public void setEmail_rid(int email_rid) {
    this.email_rid = email_rid;
    }
    public String getEmail_title() {
    return email_title;
    }
    public void setEmail_title(String email_title) {
    this.email_title = email_title;
    }
    public String getEmail_content() {
    return email_content;
    }
    public void setEmail_content(String email_content) {
    this.email_content = email_content;
    }
    public String getEmail_sDate() {
    return email_sDate;
    }
    public void setEmail_sDate(String email_sDate) {
    this.email_sDate = email_sDate;
    }
    public int getEmail_important() {
    return email_important;
    }
    public void setEmail_important(int email_important) {
    this.email_important = email_important;
    }
    public String getEmail_file() {
    return email_file;
    }
    public void setEmail_file(String email_file) {
    this.email_file = email_file;
    }
    public int getEmail_isRead() {
    return email_isRead;
    }
    public void setEmail_isRead(int email_isRead) {
    this.email_isRead = email_isRead;
    }
    public String getEmail_lastDate() {
    return email_lastDate;
    }
    public void setEmail_lastDate(String email_lastDate) {
    this.email_lastDate = email_lastDate;
    }
    public int getEmail_ok() {
    return email_ok;
    }
    public void setEmail_ok(int email_ok) {
    this.email_ok = email_ok;
    }

    public String toString(){
    return super.toString();
    }
    public boolean equals(Object obj){
    return super.equals(obj);
    }
    public int hashCode(){
    return super.hashCode();
    }
    }
    这是hbm文件<?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
        <hibernate-mapping package="models">
        <class name="Email" table="email" lazy="false">
        <id name="email_id" column="email_id" type="java.lang.Integer">
        <generator class="increment"/>
        </id>
        <property name="email_sid" column="email_sid" type="int"/>
        <property name="email_rid" column="email_rid" type="int"/>
        <property name="email_title" column="email_title" type="string"/>
        <property name="email_content" column="email_content" type="string"/>
        <property name="email_sDate" column="email_sDate" type="string"/>
        <property name="email_important" column="email_important" type="int"/>
        <property name="email_file" column="email_file" type="string"/>
        <property name="email_isRead" column="email_isRead" type="int"/>
        <property name="email_lastDate" column="email_lastDate" type="string"/>
        <property name="email_ok" column="email_ok" type="int"/>
        </class>
        </hibernate-mapping>
      

  10.   

    把你的整个的hql语句打印出来看看对不对!另外建议使用StringBuffer来实现你拼hql+=的方式,而不是直接用String
      

  11.   

     models.Email 直接写查询的类对象名就可以了
      

  12.   

    在执行list=(List)this.getHibernateTemplate().find(hql); 方法之前先把hql语句打印出来看一看
      

  13.   

    已经解决,action取得值后,由于链接跳转时,没有把属性值也传过去,谢谢各位指导!
      

  14.   

    我是怀疑你的hql语句的问题