我正在使用带有hibernate 3.5.4的spring 3
1-我想在事务中创建一个对象并将其保存到DB(成功通过)。 2-我想更新该对象中的某些字段(同一个对象),并在另一个事务中更新DB(这里就是问题)。
问题是,是在第一个事务中成功保存对象,但是在第二个事务中它没有在DB中更新它。
这是代码示例:
public String entry(String str){
Bill b = create(str);
b = update(b);
b = updateAgain(b);
return "DONE";
}
@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public Bill create(String num){
Bill bill = new Bill();
bill.setBillNumber(num);
baseDao.saveObject(bill);
return bill;
}
@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false)
public Bill update(Bill bill){
bill.setRetailAmount(152.0);
baseDao.saveObject(bill);
return bill;
}
注意:我不想在方法“entry”上放置@transactional注释。
谢谢,
答案 0 :(得分:1)
如果在同一个类中的方法上调用,则注释不会生效。 AOP不能通过代理拦截。将您的输入方法移到课堂外。
编辑:Spring通过带有代理或子类的注释驱动的AOP启用Transactional注释。使用代理启用时,您的代理在本地方法调用中不在图片中。这个blog post对图片有很好的解释。