问题:hibernate 注解,Criteria 查询时,更新表字段
目的:查询某表中数据
问题:hibernate 注解,Criteria 查询表数据时,更新表字段信息。
?
hibernate 查询语句:
Criteria criteria = this.getSession().createCriteria(ZhiHuiTongTransfer.class);
??????? List<Integer> allStatus = new ArrayList<Integer>();
????????? ....................
??????? PageExt page = new PageExt();
??????? page.setPageSize(pageSize);
??????? page.setPageNo(pageNo);
??????....................
?????? setPageParameter(criteria, page);
??????? List<ZhiHuiTongTransfer> list = criteria.list();
??????? page.setResult(criteria.list());
??????? return page;
打印语句如下:
select top 50 this_.id as id22_0_, this_.createTime as createTime22_0_, this_.finishTime as finishTime22_0_, this_.handler as handler22_0_, this_.isFinish as isFinish22_0_, this_.modityTime as modityTime22_0_, this_.operator as operator22_0_, this_.operatorActive as operator8_22_0_, this_.payMoney as payMoney22_0_, this_.payeeBank as payeeBank22_0_, this_.payeeBankAccount as payeeBa11_22_0_, this_.payeeName as payeeName22_0_, this_.payerBank as payerBank22_0_, this_.payerBankAccount as payerBa14_22_0_, this_.payerBankType as payerBa15_22_0_, this_.payerName as payerName22_0_, this_.paymentMethod as payment17_22_0_, this_.phone as phone22_0_, this_.refundMoney as refundM19_22_0_, this_.refundType as refundType22_0_, this_.remark as remark22_0_, this_.sysPayeeBank as sysPaye22_22_0_, this_.transId as transId22_0_, this_.transSerialNumber as transSe24_22_0_, this_.transferAmount as transfe25_22_0_, this_.transferStatus as transfe26_22_0_ from mall.ZhiHuiTongTransfer this_ where this_.transferStatus in (?, ?, ?, ?) and this_.payerBankType<>? and this_.payerBankType<>? and this_.operatorActive=? order by this_.createTime desc
Hibernate: update mall.ZhiHuiTongTransfer set isFinish=? where id=?
Hibernate: update mall.ZhiHuiTongTransfer set isFinish=? where id=?
Hibernate: update mall.ZhiHuiTongTransfer set isFinish=? where id=?
?
原因:?
? /**
???? * 是否完成
???? */
??? private Boolean isFinish;
public Boolean getIsFinish() {
??????? return isFinish;
??? }
??? public void setIsFinish(Boolean isFinish) {
??????? isFinish = isFinish;
??? }
?
解决方法:哎 不难看出是set方法引起的更新问题。? public Boolean getIsFinish() {
??????? return this.isFinish;
??? }
??? public void setIsFinish(Boolean isFinish) {
??????? this.isFinish = isFinish;
??? }
疑惑:我只是做查询,为什么会直接更新呢。还请高人赐教
看看方法有没有配成事务的。有没有配成自动提交的。hibernate会在有事务的方法里自动提交po.如果用spirng,是在service层查询,确认该方法有没有配成read-only.good luck.你能不能放在问答里,好让我加些问答分。 看看方法有没有配成事务的。有没有配成自动提交的。hibernate会在有事务的方法里自动提交po.如果用spirng,是在service层查询,确认该方法有没有配成read-only.good luck.你能不能放在问答里,好让我加些问答分。