0

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 次,但是,在数据库中,“数字”列仅被扣除 1 次,调用 3 次后,列值从 100 变为 99 ,不知道为什么只扣了1次,预期值应该是97,我尝试flush & clear session来避免hibernate3缓存问题,有人知道怎么解决吗?

谢谢你。

4

1 回答 1

0

据我所知,您的事务没有提交到数据库。您应该在与数据库通信时使用事务。

开始会话后,使用

Transaction tx = session.beginTransaction()

并在完成查询后,使用tx.commit().

于 2013-11-18T07:49:53.020 回答