??xml version="1.0" encoding="utf-8" standalone="yes"?> 2.hiberate query.setDate('",newDate()),不能使sqlq行时分U的比?此时应该使用.setTimeStamp().
]]>
我花费了一个星期的旉才改正?br />2。最奇怪的一个异常是Qhibernate乐观锁异常?hibernate3.HibernateOptimisticLockingFailureException: Unexpected row count: 2 expected: 1
我用的是hibernate3,Ҏ据库数据的更新是默认的乐观锁。因为它是生来就相当乐观的,不考虑我们q种新手常犯的错误,数据兌重复?br />比如Q从数据库里取出一个对象,然后l它重新赋|然后UpdateQ如果其他表和它相关Q而且有重复的记录Q就会报q样的错。解x法是惛_法不让其他表的相x据记录重复就可以解决?br />3。我遇到的另一个不常见的异常:UncategorizedSQLException错误原因Qmssql中的text型字DؓI|他加上默认值后恢复正常Q具体原因不太清楚?br />org.springframework.jdbc.UncategorizedSQLException
]]>
q是个关于hibernate斚w的问?
我的数据库关联较?hbm.xml是用myeclipse自动生成?dao是spring?也是myeclipse自动生成?在用hibernate向数据库插入数据的时?W一ơ执行还比较利,但把同样的数据再ơ插入的时?代码p不动?(主键是自增长?插入时不讑ր?,但当我重启tomcat?W一ơ执行插入又能插入了,但第二次执行的时候又C动了...p样周而复?
我测试后发现l常被卡住的语句是类g面的语句:
(某类)beanDAO.findByExample(某类实例).get(0);
请各位抽I看?谢谢.
大家可以凭经验来判断一下这个问?不用看代?因ؓhbm.mxl 和dao都是myeclipse自动生成?我没有改.
而程序中l常出错p?(某类)beanDAO.findByExample(某类实例).get(0);
现在我对q个问题ȝ有点思\了。但q没实现Q请高手指教?/font>
java代码: |
package infoweb.dao; import java.util.List; import java.util.Iterator; import infoweb.pojo.Info; import net.sf.hibernate.HibernateException; import net.sf.hibernate.Query; import net.sf.hibernate.Session; import org.springframework.orm.hibernate.HibernateCallback; import org.springframework.orm.hibernate.support.HibernateDaoSupport; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author D|?br />* @version 1.0 */ publicclass InfoDAOImpl extends HibernateDaoSupport implements IInfoDAO { /** * 构造函?br /> */ public InfoDAOImpl(){ super(); } /** * 增加记录 * @param info Info */ publicvoid setInfo(Info info)throwsException{ getHibernateTemplate().save(info); } /** * 通过ID取得记录 * @param id String * @return Info */ public Info getInfoById(String id)throwsException{ Info info = (Info) getHibernateTemplate().load(Info.class, id); return info; } /** * 修改记录 * @param Info info */ publicvoid modifyInfo(Info info)throwsException{ getHibernateTemplate().update(info); } /** * 删除记录 * @param Info info */ publicvoid removeInfo(Info info)throwsException{ getHibernateTemplate().delete(info); } //////////////////////////////////////////////////////// ///// /// /////以下部䆾不带审核功能 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录L * @return int */ publicint getInfosCount()throwsException{ int count = 0; String queryString = "select count(*) from Info"; count = ((Integer) getHibernateTemplate().iterate(queryString).next()). intValue(); return count; } /** * 取所有记录集?br /> * @return Iterator */ publicIterator getAllInfos()throwsException{ Iterator iterator = null; String queryString = " select info from Info as info order by info.id desc"; List list = getHibernateTemplate().find(queryString); iterator = list.iterator(); return iterator; } /** * 取记录集?br /> * @return Iterator * @param int position, int length */ publicIterator getInfos(int position, int length)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info order by info.id desc"; Query query = getHibernateTemplate().createQuery(getSession(), queryString); //讄游标的v始点 query.setFirstResult(position); //讄游标的长?/span> query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } /** * 取第一条记?br /> * @throws Exception * @return Station */ public Info getFirstInfo()throwsException{ Iterator iterator = null; Info info = null; String queryString = "select info from Info as info order by info.id desc"; Query query = getHibernateTemplate().createQuery(getSession(), queryString); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); if(iterator.hasNext()){ info = (Info) iterator.next(); } return info; } /** * 取最后一条记?br /> * @throws Exception * @return Station */ public Info getLastInfo()throwsException{ Iterator iterator = null; Info info = null; String queryString = "select info from Info as info order by info.id asc"; Query query = getHibernateTemplate().createQuery(getSession(), queryString); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); if(iterator.hasNext()){ info = (Info) iterator.next(); } return info; } //////////////////////////////////////////////////////// ///// /// ///// 以下部䆾表中要有特定字段才能Õ吩诵袪 牳鋈撕推W禒 /// ///// /// //////////////////////////////////////////////////////// /** * 取符合条件记录L, [表中要有 isperson 字段] * @return int * @param int isPerson */ publicint getInfosCountByIsperson(int isPerson)throwsException{ int count = 0; String queryString = "select count(*) from Info as info where info.isperson =" + isPerson; count = ((Integer) getHibernateTemplate().iterate(queryString).next()). intValue(); return count; } /** * 取所有符合条件记录集? 模糊查询条g.[表中要有 isperson 字段] * @return Iterator * @param int isPerson */ publicIterator getAllInfosByIsperson(int isPerson)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.isperson =" + isPerson + " order by info.id desc"; List list = getHibernateTemplate().find(queryString); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } /** * 取符合条件记录集? 模糊查询条g.[表中要有 isperson 字段] * @return Iterator * @param int isPerson,int position, int length */ publicIterator getInfosByIsperson(int isPerson, int position, int length)throws Exception{ Iterator iterator = null; String queryString = " select info from Info as info where info.isperson =" + isPerson + " order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //讄游标的v始点 query.setFirstResult(position); //讄游标的长?/span> query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部䆾表中要有特定字段才能Õ吩诵袪 查询部䆾 /// ///// /// /////////////////////////////////////////////////////// /** * 取符合条件记录L, 模糊查询条g.[表中要有 title 字段] * @return int * @param String text */ publicint getInfosCount(String text)throwsException{ int count = 0; count = ((Integer) getHibernateTemplate().iterate( "select count(*) from Info as info where info.title like '%" + text + "%'").next()).intValue(); return count; } /** * 取所有符合条件记录集? 模糊查询条g.[表中要有 title 字段] * @return Iterator * @param String text */ publicIterator getAllInfos(String text)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.title like '%" + text + "%' order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } /** * 取符合条件记录集? 模糊查询条g.[表中要有 title 字段] * @return Iterator * @param String text,int position, int length */ publicIterator getInfos(String text, int position, int length)throws Exception{ Iterator iterator = null; String queryString = " select info from Info as info where info.title like '%" + text + "%' order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //讄游标的v始点 query.setFirstResult(position); //讄游标的长?/span> query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部䆾表中要有特定字段才能Õ吩诵袪 犠⒉嵯喙? /// ///// /// //////////////////////////////////////////////////////// /** * 取符合条件记录L.[ 表中要有 registername 字段] * @return int * @param String text */ publicint getInfosCountByRegisterName(String registerName)throwsException{ int count = 0; count = ((Integer) getHibernateTemplate().iterate( "select count(*) from Info as info where info.registername = '" + registerName + "'").next()).intValue(); return count; } /** * 通过注册名取得一条记?如有多条,只取W一?[表中要有 registername字段] * @param registername String * @return Info */ public Info getInfoByRegisterName(String registerName)throwsException{ Iterator iterator = null; Info info = null; String queryString = " select info from Info as info where info.registername='" + registerName + "' order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); if(iterator.hasNext()){ info = (Info) iterator.next(); } return info; } /** * 通过注册名取得所有记录集?[表中要有 registername字段] * @param registername String * @return Iterator */ publicIterator getAllInfosByRegisterName(String registerName)throws Exception{ Iterator iterator = null; String queryString = " select info from Info as info where info.registername='" + registerName + "' order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } /** * 通过注册名取得记录列?[表中要有 registername字段] * @param registername String * @return Iterator */ publicIterator getInfosByRegisterName(String registerName, int position, int length)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.registername='" + registerName + "' order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //讄游标的v始点 query.setFirstResult(position); //讄游标的长?/span> query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } //////////////////////////////////////////////////////// ///// /// ///// 以下部䆾表中要有特定字段才能Õ吩诵袪 犑餍桶婵? /// ///// /// //////////////////////////////////////////////////////// /** * 取记录L.[ 表中要有 board_id 字段] * @return int * @param String boardId */ publicint getInfosCountByBoard(String boardId)throwsException{ int count = 0; count = ((Integer) getHibernateTemplate().iterate( "select count(*) from Info as info where info.boardId = '" + boardId + "'").next()).intValue(); return count; } /** * 通过版块名取得所有记录集?[表中要有 board_id字段] * @param BoardId String * @return Iterator */ publicIterator getAllInfosByBoard(String boardId)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.boardId='" + boardId + "' order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } /** * 通过版块名取得记录列?[表中要有 board_id字段] * @param BoardId String * @return Iterator */ publicIterator getInfosByBoard(String boardId, int position, int length)throws Exception{ Iterator iterator = null; String queryString = " select info from Info as info where info.boardId='" + boardId + "' order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //讄游标的v始点 query.setFirstResult(position); //讄游标的长?/span> query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } /** * 取符合条件记录L.[ 表中要有 board_id 字段,title] 模糊查询title * @return int * @param String boardId ,String text */ publicint getInfosCountByBoard(String boardId, String text)throwsException{ int count = 0; count = ((Integer) getHibernateTemplate().iterate( "select count(*) from Info as info where info.boardId='" + boardId + "' and info.title like '%" + text + "%'").next()).intValue(); return count; } /** * 通过版块名取得记录列?[表中要有 board_id字段] 模糊查询title * @param String boardID,int position, int length * @return Iterator */ publicIterator getInfosByBoard(String boardId, int position, int length, String text)throwsException{ Iterator iterator = null; String queryString = " select info from Info as info where info.boardId='" + boardId + "' and info.title like '%" + text + "%' order by info.id desc"; //创徏查询 Query query = getHibernateTemplate().createQuery(getSession(), queryString); //讄游标的v始点 query.setFirstResult(position); //讄游标的长?/span> query.setMaxResults(length); //记录生成 List list = query.list(); //把查询到的结果放入P代器 iterator = list.iterator(); return iterator; } //////////////////////////////////////////////////////// ///// /// /////以下部䆾带有审核功能 /// ///// /// //////////////////////////////////////////////////////// /** * 取记录L * @return int * @param int isAuditing */ publicint getInfosCount(int isAuditing)throwsException{ |