Pojo对象:
public class Test {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private Integer id;
private String name;
@Column(columnDefinition="int default 100")
private int number;
.....getter and setter........
}
后端行动:
@ResponseBody
@RequestMapping(value= "/common/index3")
public String index3(){
Session session = sessionFactory.getCurrentSession();
Test t = session.get(Test.class, 1);
t.setNumber(t.getNumber() - 1);
System.out.println("invoked");
session.update(t);
return "success";
}
网页ajax触发器
$(document).ready(function(){
for(var i = 0; i < 3; i ++){
$.post("/common/index3");
}
}
问题
从客户端我发送了3次请求到后端操作,并且该操作也被正确调用了3次,但是,在数据库中“Number”列仅扣除了1次,在调用3次后,列值变为来自100到99,我不知道为什么它只扣了1次,预期值应该是97,我试着冲洗&amp;清除会话以避免hibernate3缓存问题,有谁知道如何解决这个问题?
谢谢你。答案 0 :(得分:0)
从我所看到的,您的交易未被提交到数据库。您应该在与DB通信时使用事务。
开始会话后,使用
开始交易Transaction tx = session.beginTransaction()
在完成查询后,使用tx.commit()
将其提交给数据库。