网上挂号预约系统统计某个医生预约的患者人数。求大神指导

qq_29874439 2016-06-05 08:55:37

public String yishengAll()
{
String sql="from TYisheng where del='no' and keshiId="+keshiId;
List yishengList=yishengDAO.getHibernateTemplate().find(sql);
for(int i=0;i<yishengList.size();i++)//每一个医生下的患者人数
{
TYisheng yisheng=(TYisheng)yishengList.get(i);//某一个医生
//记录该医生预约的患者人数
int count=yuyueDAO.getHibernateTemplate().find("from Tyuyue where yishengId="+yisheng.getYishengId()).size();
yisheng.setKeghAmount(count);
// int count=yuyueDAO.findAll().size();
// yisheng.setKeghAmount(count);
}
Map request=(Map)ServletActionContext.getContext().get("request");
request.put("yishengList", yishengList);
return ActionSupport.SUCCESS;
}

在网上挂号预约系统中,显示科室列表,点击科室,显示科室下医生,医生列表某一列想添加可挂号数,所以需要统计一下已经挂了某一个医生的患者人数。但是以上代码运行后显示空对象异常,yuyueDAO.getHibernateTemplate().find(sql)出错,找不到是哪里的问题,烦请各位大神走过路过提个想法。
下图是预约表
...全文
1443 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_29874439 2016-06-09
  • 打赏
  • 举报
回复
我应该是这部分没有配置。 但是现在却出现了新的错误。 上网查了一下,说这种问题一般是HQL语句错误,可是我的预约表对应的实体类名就是TYuyue呀
qq_29874439 2016-06-09
  • 打赏
  • 举报
回复
后面这个错误是低级错误,谢谢大家的踊跃发言,就是配置文件出了错我没发现。
qq_29874439 2016-06-09
  • 打赏
  • 举报
回复
21楼可以说的清楚一点吗?我把相关代码全贴出来了,麻烦找一下是哪里的问题,因为我对框架不熟悉,看不出来。。
光明唧 2016-06-09
  • 打赏
  • 举报
回复
HibernateTemplate ht=yuyueDAO.getHibernateTemplate(); List list=ht.find("from Tyuyue where yishengId="+yisheng.getYishengId()).toList(); list.size(); 这样调试就知道错在哪里了。
尼坤神 2016-06-08
  • 打赏
  • 举报
回复
很明显,yuyueDAO 这个没有注入,看看自己的配置
wrong1111 2016-06-08
  • 打赏
  • 举报
回复
引用 17 楼 King50548 的回复:
你的配置是不是没配上,相关注入有没?
有可能 yuyueDAO没有注入进来。才有可能导致这个是NULL
King50548 2016-06-07
  • 打赏
  • 举报
回复
yuyueDAO.getHibernateTemplate() 调试看看这个是否是空的,HQL一般不会出现空指针异常。
qq_24297221 2016-06-07
  • 打赏
  • 举报
回复
调试看哪个东西是空的
qq_29874439 2016-06-07
  • 打赏
  • 举报
回复

	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.SQLServerDialect
				</prop>
				<prop key="hibernate.show_sql">true</prop>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>com/model/TAdmin.hbm.xml</value>
				<value>com/model/TLiuyan.hbm.xml</value>
				<value>com/model/TUser.hbm.xml</value>
				<value>com/model/TGonggao.hbm.xml</value>
				<value>com/model/TKeshi.hbm.xml</value>
				<value>com/model/TYisheng.hbm.xml</value>
				<value>com/model/TYuyue.hbm.xml</value>
			</list>
		</property>
	</bean>
这应该是DAO层注入SessionFactory的代码。

//查询该用户下的所有预约信息
	public String yuyueManaMy()
	{
		Map session=ActionContext.getContext().getSession();
		TUser user=(TUser)session.get("user");
		
		String sql="from TYuyue where userId="+user.getUserId();
		List yuyueList=yuyueDAO.getHibernateTemplate().find(sql);//findAll()
		//获取每个预约单中的医生姓名
		for(int i=0;i<yuyueList.size();i++)
		{
			TYuyue yuyue=(TYuyue)yuyueList.get(i);
			String yishengName=yishengDAO.findById(yuyue.getYishengId()).getYishengName();
			yuyue.setYishengName(yishengName);
			
		}
		Map request=(Map)ServletActionContext.getContext().get("request");
		request.put("yuyueList", yuyueList);
		return ActionSupport.SUCCESS;
	}
这个方法的yuyueDAO.getHibernateTemplate().find(sql)是可以通过的,这个功能是可以实现的。所以我很奇怪。
line_us 2016-06-07
  • 打赏
  • 举报
回复
引用 16 楼 qq_29874439 的回复:
为什么在yuyueAction中调用这个方法就是对的,在yishengAction中就不行呢
King50548 2016-06-07
  • 打赏
  • 举报
回复
你的配置是不是没配上,相关注入有没?
qq_29874439 2016-06-07
  • 打赏
  • 举报
回复
为什么在yuyueAction中调用这个方法就是对的,在yishengAction中就不行呢
Intboy 2016-06-06
  • 打赏
  • 举报
回复
把异常栈贴出来
qq_29874439 2016-06-06
  • 打赏
  • 举报
回复
请问如何注入?不太熟悉框架的使用。。需要我贴yuyueDAO的代码吗?

package com.dao;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.model.TYuyue;

/**
 * Data access object (DAO) for domain model class TYuyue.
 * 
 * @see com.model.TYuyue
 * @author MyEclipse Persistence Tools
 */

public class TYuyueDAO extends HibernateDaoSupport
{
	private static final Log log = LogFactory.getLog(TYuyueDAO.class);

	// property constants
	public static final String USER_ID = "userId";

	public static final String YISHENG_ID = "yishengId";

	public static final String SHIJIAN = "shijian";

	public static final String BEIZHU = "beizhu";

	protected void initDao()
	{
		// do nothing
	}

	//添加预约信息
	public void save(TYuyue transientInstance)
	{
		log.debug("saving TYuyue instance");
		try
		{
			getHibernateTemplate().save(transientInstance);
			log.debug("save successful");
		} catch (RuntimeException re)
		{
			log.error("save failed", re);
			throw re;
		}
	}

	//删除预约信息
	public void delete(TYuyue persistentInstance)
	{
		log.debug("deleting TYuyue instance");
		try
		{
			getHibernateTemplate().delete(persistentInstance);
			log.debug("delete successful");
		} catch (RuntimeException re)
		{
			log.error("delete failed", re);
			throw re;
		}
	}

	//查询某条预约信息
	public TYuyue findById(java.lang.Integer id)
	{
		log.debug("getting TYuyue instance with id: " + id);
		try
		{
			TYuyue instance = (TYuyue) getHibernateTemplate().get(
					"com.model.TYuyue", id);
			return instance;
		} catch (RuntimeException re)
		{
			log.error("get failed", re);
			throw re;
		}
	}

	public List findByExample(TYuyue instance)
	{
		log.debug("finding TYuyue instance by example");
		try
		{
			List results = getHibernateTemplate().findByExample(instance);
			log.debug("find by example successful, result size: "
					+ results.size());
			return results;
		} catch (RuntimeException re)
		{
			log.error("find by example failed", re);
			throw re;
		}
	}

	public List findByProperty(String propertyName, Object value)
	{
		log.debug("finding TYuyue instance with property: " + propertyName
				+ ", value: " + value);
		try
		{
			String queryString = "from TYuyue as model where model."
					+ propertyName + "= ?";
			return getHibernateTemplate().find(queryString, value);
		} catch (RuntimeException re)
		{
			log.error("find by property name failed", re);
			throw re;
		}
	}

	public List findByUserId(Object userId)
	{
		return findByProperty(USER_ID, userId);
	}

	public List findByYishengId(Object yishengId)
	{
		return findByProperty(YISHENG_ID, yishengId);
	}

	public List findByShijian(Object shijian)
	{
		return findByProperty(SHIJIAN, shijian);
	}

	public List findByBeizhu(Object beizhu)
	{
		return findByProperty(BEIZHU, beizhu);
	}

	//查询全部预约信息
	public List findAll()
	{
		log.debug("finding all TYuyue instances");
		try
		{
			String queryString = "from TYuyue";
			return getHibernateTemplate().find(queryString);
		} catch (RuntimeException re)
		{
			log.error("find all failed", re);
			throw re;
		}
	}

	public TYuyue merge(TYuyue detachedInstance)
	{
		log.debug("merging TYuyue instance");
		try
		{
			TYuyue result = (TYuyue) getHibernateTemplate().merge(
					detachedInstance);
			log.debug("merge successful");
			return result;
		} catch (RuntimeException re)
		{
			log.error("merge failed", re);
			throw re;
		}
	}

	public void attachDirty(TYuyue instance)
	{
		log.debug("attaching dirty TYuyue instance");
		try
		{
			getHibernateTemplate().saveOrUpdate(instance);
			log.debug("attach successful");
		} catch (RuntimeException re)
		{
			log.error("attach failed", re);
			throw re;
		}
	}

	public void attachClean(TYuyue instance)
	{
		log.debug("attaching clean TYuyue instance");
		try
		{
			getHibernateTemplate().lock(instance, LockMode.NONE);
			log.debug("attach successful");
		} catch (RuntimeException re)
		{
			log.error("attach failed", re);
			throw re;
		}
	}

	public static TYuyueDAO getFromApplicationContext(ApplicationContext ctx)
	{
		return (TYuyueDAO) ctx.getBean("TYuyueDAO");
	}
}
菜 头 2016-06-06
  • 打赏
  • 举报
回复
帖多点。。。
  • 打赏
  • 举报
回复
dao层没注入?
qq_29874439 2016-06-06
  • 打赏
  • 举报
回复
这是hibernate配置文件

这是JavaBean

这是把语句拆成单条后报错的地方

这是我能想到可能出错的所有地方了,看看大家能看出来什么吗
qq_29874439 2016-06-06
  • 打赏
  • 举报
回复
yuyueDAO.getHibernateTemplate().find()这句的错,把它拆开都试过了,都跳不到计算长度那一句。放在sql语句里运行过了,可以查出来。
  • 打赏
  • 举报
回复
把sql放到数据库里面执行一下,说不定是没查到数据呢
King50548 2016-06-06
  • 打赏
  • 举报
回复
yuyueDAO.getHibernateTemplate().find("from Tyuyue where yishengId="+yisheng.getYishengId()).size(); 把这分成两步,看是第一步报错还是第二步.size()报错
加载更多回复(5)

81,115

社区成员

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

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