情况是我在DAO里写了个方法调用存储过程,逻辑一切都没问题,可多次读取数据后,就会发现无法正常从数据库中得到数据了。
比如说我调用了3次存储过程这个方法,这个时候在去访问数据库,那么会一直等待,N久没有返回结果,只有重启tomcat才恢复正常,但访问几次存储过程就又完蛋了,访问其他任何dao读取数据都没问题。
public List<MessageThreadEntity> FindMessageThread(int uid, int status) {
Query query = this.getSession().createSQLQuery(
"exec view_message_thread " + uid + "," + status);
List sqlList = query.list();
List<MessageThreadEntity> mtList = new ArrayList<MessageThreadEntity>();
for (int i = 0; i < sqlList.size(); i++) {
Object[] objArr = (Object[]) sqlList.get(i);
MessageThreadEntity temp = new MessageThreadEntity();
temp.setTid(Integer.parseInt(objArr[0].toString()));
temp.setUid(Integer.parseInt(objArr[1].toString()));
temp.setFuid(Integer.parseInt(objArr[2].toString()));
if (objArr[3] != null)
temp.setNickname(objArr[3].toString());
if (objArr[4] != null)
temp.setHeadImage(objArr[4].toString());
else
temp.setHeadImage("/images/defaultHead.gif");
if (objArr[5] != null)
temp.setSubject(objArr[5].toString());
if (objArr[6] != null)
temp.setContent(objArr[6].toString());
if (objArr[7] != null)
temp.setLastMessageTime(objArr[7].toString());
if (objArr[8] != null)
temp.setCtime(objArr[8].toString());
mtList.add(temp);
}
return mtList;
}
这个是DAO中的调用存储过程代码
--获取用户的消息列表
--@uid 用户编号
--@status 待获取的消息状态 0全部消息 1已读消息 2未读消息
create procedure view_message_thread(@uid int,@status int)
as
--获取全部消息
if @status=0
begin
select t.tid,t.uid,t.fuid,u.nickname,u.headimage,t.subject,t.ctime from message_thread t,user_virtualinfo u
where t.uid=@uid and t.fuid=u.uid
order by t.ctime desc
end
else
--获取已读消息
if @status=1
begin
select t.tid,t.uid,t.fuid,u.nickname,u.headimage,t.subject,t.ctime from message_thread t,user_virtualinfo u,message_news new
where t.uid=@uid and t.fuid=u.uid and t.tid=new.tid
order by t.ctime desc
end
else
--获取未读消息
if @status=2
begin
select t.tid,t.uid,t.fuid,u.nickname,u.headimage,t.subject,t.ctime from message_thread t,user_virtualinfo u
where t.uid=@uid and t.fuid=u.uid and t.tid not in(select tid from message_news where uid=@uid)
order by t.ctime desc
end
go
这部分是存储过程代码谢谢各位帮帮忙看看哪里有问题
比如说我调用了3次存储过程这个方法,这个时候在去访问数据库,那么会一直等待,N久没有返回结果,只有重启tomcat才恢复正常,但访问几次存储过程就又完蛋了,访问其他任何dao读取数据都没问题。
public List<MessageThreadEntity> FindMessageThread(int uid, int status) {
Query query = this.getSession().createSQLQuery(
"exec view_message_thread " + uid + "," + status);
List sqlList = query.list();
List<MessageThreadEntity> mtList = new ArrayList<MessageThreadEntity>();
for (int i = 0; i < sqlList.size(); i++) {
Object[] objArr = (Object[]) sqlList.get(i);
MessageThreadEntity temp = new MessageThreadEntity();
temp.setTid(Integer.parseInt(objArr[0].toString()));
temp.setUid(Integer.parseInt(objArr[1].toString()));
temp.setFuid(Integer.parseInt(objArr[2].toString()));
if (objArr[3] != null)
temp.setNickname(objArr[3].toString());
if (objArr[4] != null)
temp.setHeadImage(objArr[4].toString());
else
temp.setHeadImage("/images/defaultHead.gif");
if (objArr[5] != null)
temp.setSubject(objArr[5].toString());
if (objArr[6] != null)
temp.setContent(objArr[6].toString());
if (objArr[7] != null)
temp.setLastMessageTime(objArr[7].toString());
if (objArr[8] != null)
temp.setCtime(objArr[8].toString());
mtList.add(temp);
}
return mtList;
}
这个是DAO中的调用存储过程代码
--获取用户的消息列表
--@uid 用户编号
--@status 待获取的消息状态 0全部消息 1已读消息 2未读消息
create procedure view_message_thread(@uid int,@status int)
as
--获取全部消息
if @status=0
begin
select t.tid,t.uid,t.fuid,u.nickname,u.headimage,t.subject,t.ctime from message_thread t,user_virtualinfo u
where t.uid=@uid and t.fuid=u.uid
order by t.ctime desc
end
else
--获取已读消息
if @status=1
begin
select t.tid,t.uid,t.fuid,u.nickname,u.headimage,t.subject,t.ctime from message_thread t,user_virtualinfo u,message_news new
where t.uid=@uid and t.fuid=u.uid and t.tid=new.tid
order by t.ctime desc
end
else
--获取未读消息
if @status=2
begin
select t.tid,t.uid,t.fuid,u.nickname,u.headimage,t.subject,t.ctime from message_thread t,user_virtualinfo u
where t.uid=@uid and t.fuid=u.uid and t.tid not in(select tid from message_news where uid=@uid)
order by t.ctime desc
end
go
这部分是存储过程代码谢谢各位帮帮忙看看哪里有问题
解决方案 »
- 【高分紧急】关于域名和ip地址绑定的问题。
- servelet+jsp查询界面的下拉框怎样赋初始值?用标签的方法
- 在线急等!!!下载附件问题.(txt格式)服务器为(weblogic)
- javamail发邮件如何实现不用用户名和密码
- 书到用时方恨少、要下软件方恨来论坛少!
- 大家帮我看一下这个链接问什么取不到了?连接池的问题
- struts validation.xml一个字段校验问题??
- 如何才能产生位数比较小的定长的而且只包含数字的流水号码
- 郁闷了,很久,浪费我所有,为什么一个个TOMCAT运行不能够!
- jsp显示问题?~--〉?
- tomcat启动后十几分钟停止部署
- javascript 实现翻书特效
在hibernate.cfg.xml中加入
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property>
<property name="c3p0.max_statement">50</property>
<property name="Pool.MaximumIdleConnections" value="15"/>
<property name="Pool.MaximumCheckoutTime" value="120000"/>
<property name="Pool.MaximumWait" value="1000"/>
<property name="Pool.TimeToWait" value="500"/>