关于SSH的getHibernateTemplate().find()返回null

wcplym 2010-03-08 09:40:20
SSH的getHibernateTemplate().find()返回null,代码无错,不知如何解决?请高手指点!谢谢!
...全文
424 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaodeme 2010-03-08
  • 打赏
  • 举报
回复
我是怀疑你的hql语句的问题
wcplym 2010-03-08
  • 打赏
  • 举报
回复
已经解决,action取得值后,由于链接跳转时,没有把属性值也传过去,谢谢各位指导!
fyjin99 2010-03-08
  • 打赏
  • 举报
回复
引用 9 楼 wzju64676266 的回复:
SELECT e.email_id,e.email_title FROM models.Email e WHERE "+sqlWhere+""
这个代码有问题吗?

models.Email  这个应该不用带包名吧,我不知道带包名会不会错

带不带包名无所谓的
  • 打赏
  • 举报
回复
在执行list=(List)this.getHibernateTemplate().find(hql); 方法之前先把hql语句打印出来看一看
Never_lets_off 2010-03-08
  • 打赏
  • 举报
回复
models.Email 直接写查询的类对象名就可以了
蛋黄车 2010-03-08
  • 打赏
  • 举报
回复
把你的整个的hql语句打印出来看看对不对!

另外建议使用StringBuffer来实现你拼hql+=的方式,而不是直接用String
wcplym 2010-03-08
  • 打赏
  • 举报
回复
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>
wzju64676266 2010-03-08
  • 打赏
  • 举报
回复
你把你的pojo类贴出来看一下,怀疑你的字段写错了
wzju64676266 2010-03-08
  • 打赏
  • 举报
回复
SELECT e.email_id,e.email_title FROM models.Email e WHERE "+sqlWhere+""
这个代码有问题吗?

models.Email 这个应该不用带包名吧,我不知道带包名会不会错
蛋黄车 2010-03-08
  • 打赏
  • 举报
回复
String hql="SELECT e.email_id,e.email_title FROM models.Email e WHERE "+sqlWhere+"";

应该大写 吧
BearKin 2010-03-08
  • 打赏
  • 举报
回复
你的标题写的是find返回null 大家可能都被你误导了..

先确认问题出在哪里吧 估计是HQL语句的问题 既然你数据库里有值 你可先把查询条件拿掉 看看他能查询出来不
wcplym 2010-03-08
  • 打赏
  • 举报
回复
这是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,数据库中有值!
wcplym 2010-03-08
  • 打赏
  • 举报
回复
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;
}
}
BearKin 2010-03-08
  • 打赏
  • 举报
回复
贴下代码吧 返回null估计机会可能不大(不是空List么? 我不知道这个是咋回事哦..)
qqxuexixuexi 2010-03-08
  • 打赏
  • 举报
回复
楼主好阳光啊!既然感觉没错,还?贴出来分析分析
蛋黄车 2010-03-08
  • 打赏
  • 举报
回复
getHibernateTemplate().find()参数是什么?应该返回什么?

整个方法呢?全贴出来会好看点
如一宝宝 2010-03-08
  • 打赏
  • 举报
回复
要贴代码的好吧
回复内容太短了!
hanzhdy 2010-03-08
  • 打赏
  • 举报
回复
肯定是HQL的问题!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧