网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月29日漏签0天
web吧 关注:123,130贴子:822,471
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 0回复贴,共1页
<<返回web吧
>0< 加载中...

hibernate数据更新问题

  • 只看楼主
  • 收藏

  • 回复
  • 金索伦
  • 幼儿园
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我要是实现的功能是:
一个用户会上传照片,并且可以更新;
每次更新,不删除数据库记录,只把表中的 "isAvailable"字段 状态从"Y" 改为"N",不更新时间戳字段 "initTime",然后往数据库中查入一条新纪录。
然后我出现的问题是,每次更新照片的时候,旧记录的时间戳字段 "initTime"也会被修改,而且时间比新纪录要晚20秒左右。
项目中用了spring托管Hibernate事务
application.xml配置如下:
<!-- 配置session factory-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--配置拦截器-->
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 配置bean自动代理 -->
<bean id="autoproxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="proxyTargetClass" value="true"/>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
<property name="beanNames">
<list>
<value>*Service</value>
</list>
</property>
</bean>
service层代码(部分,去掉生成文件名,路径等跟问题无关的代码)
public ServiceResult imageUploadByUserId(FileVO fileVO, UserLoginInfo loginInfo) throws BaseException {
if (null == fileVO || null == loginInfo) {
setServiceResult(REP_USER_PARAM_ERROR, MSG_USER_PARAM_EMPTY, null);
return mServiceResult;
}
int userRecordId = loginInfo.getUserRecordId();
String imageType = fileVO.getFileType();
//更新原有图片记录
List<BaseModel> imagesResult = mImageInfoDAO
.getImageInfoByUserIdAndType(userRecordId, imageType);
if (null != imagesResult) {
for (BaseModel item : imagesResult) {
((TImageInfo) item).setIsNew(IS_NEW_VALUE_NO);
mImageInfoDAO.saveOrUpdateImageInfoByInstance(((TImageInfo) item));
}
}
//保存数据库
TImageInfo imageInfo = new TImageInfo();
imageInfo.setOwnerRecordId(userRecordId);
imageInfo.setImagePath(targetFileRelativePath);
imageInfo.setThumbnailPath(targetThumbnailRelativePath);
imageInfo.setImageType(imageType);
imageInfo.setImagePurpose(fileVO.getFilePurpose());
imageInfo.setContentType(fileVO.getFileContentType());
imageInfo.setIsNew(IS_NEW_VALUE_YES);
imageInfo.setInitTime(new Timestamp(timestamp));
if (mImageInfoDAO.saveOrUpdateImageInfoByInstance(imageInfo)) {
setServiceResult(REP_SERVER_HANDLE_SUCCESS, null, null);
} else {
setServiceResult(REP_SERVER_HANDLE_ERROR, null, null);
}
return mServiceResult;
}
Dao层查询方法
public List<BaseModel> getImageInfoByUserIdAndType(int userRecordId, String imageType) throws BaseException {
try {
List<BaseModel> resultList = getSession().createCriteria(TImageInfo.class)
.add(Restrictions.eq(OWNER_RECORD_ID_KEY, userRecordId))
.add(Restrictions.eq(IMAGE_TYPE_KEY, imageType))
.list();
if (null == resultList || resultList.isEmpty()) {
return null;
}
return resultList;
} catch (RuntimeException re) {
BaseException be = ExceptionFactory.getException(DAOException.class,
"save or update Image Info RTException", re);
throw be;
}
Dao层更新方法
public boolean saveOrUpdateImageInfoByInstance(TImageInfo imageInfo) throws BaseException {
try {
getSession().saveOrUpdate(imageInfo);
return true;
} catch (RuntimeException re) {
BaseException be = ExceptionFactory.getException(DAOException.class,
"save or update Image Info RTException", re);
throw be;
}
问题如图,isNew为no的记录是先存在的,但是在插入后3条记录后,他们的时间被更新了}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回web吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示