各位大虾们,帮帮忙server端用servlet接受请求,然后用Hibernate对数据进行处理。有时候在执行下面的方法时打印出了两条sql语句,public boolean isServiceAvailableAccordingPhoneNo(String phoneNo) {
Transaction tx = null;
try {
sf = SessionFactoryUtil.getSessionFactory();
Session session = sf.getCurrentSession();
tx = session.beginTransaction();
Query query = session.createQuery("select u.cxService from UserInfo u where u.phoneNo = ?");
query.setParameter(0, phoneNo);
List list = query.list();
session.getTransaction().commit();
if (list != null && list.size() > 0
&& ((Integer) (list.get(0)) != 0)) {
return true;
}
} catch (Exception e) {
tx.rollback();
}
return false;
}
Hibernate: select userinfo0_.cxService as col_0_0_ from UserInfo userinfo0_ where userinfo0_.phoneNo=?
Hibernate: update CXInfo set tEnd=?, imageId=?, imei=?, modeType=?, phoneNo=?, signature=?, tStrat=?, timeStamp=?, userInfoId=? where id=?
不知道在使用Hibernate的时候哪边没有注意??不知道是不是因为并发的问题??
Transaction tx = null;
try {
sf = SessionFactoryUtil.getSessionFactory();
Session session = sf.getCurrentSession();
tx = session.beginTransaction();
Query query = session.createQuery("select u.cxService from UserInfo u where u.phoneNo = ?");
query.setParameter(0, phoneNo);
List list = query.list();
session.getTransaction().commit();
if (list != null && list.size() > 0
&& ((Integer) (list.get(0)) != 0)) {
return true;
}
} catch (Exception e) {
tx.rollback();
}
return false;
}
Hibernate: select userinfo0_.cxService as col_0_0_ from UserInfo userinfo0_ where userinfo0_.phoneNo=?
Hibernate: update CXInfo set tEnd=?, imageId=?, imei=?, modeType=?, phoneNo=?, signature=?, tStrat=?, timeStamp=?, userInfoId=? where id=?
不知道在使用Hibernate的时候哪边没有注意??不知道是不是因为并发的问题??
如:get方法这样写
{
if(x==null)
x=不为null的值。
}
在这种情况下,当取出来之后,hibernate即会识别到这个对象的值会发生变化,而会将新信息更新到数据库当中。这就是多出的update的由来。
select这种语句一般不需要加入事务