我是冬眠的新人,如何在春季使用@Transactional,
这是inf类,
requirements.txt
实施类
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackForClassName = {
"com.framework.exceptions.ApplicationException" })
public ServiceObject create(ServiceObject dtObject) throws ApplicationException;
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackForClassName = {
"com.framework.exceptions.ApplicationException" })
public ServiceObject update(ServiceObject dtObject) throws ApplicationException;
虽然调用read(...)方法,但在内部调用了update(...)方法两次,但结果将是在具有不同行的单个表中进行两次不同的更新,但更新错误。
所以,我该如何使用@Transactional注释。
请帮助我解决这个问题。
答案 0 :(得分:0)
是否更新了同一行而不是两个不同的行?如果您是错的,那么请考虑@Transactional
批注定义附加到持久性上下文的单个事务的范围。
因此,当您使用相同的对象(设置或更改)时,假设该对象的属性不同,则底层JPA会检测到它基本上就是您要更新的同一对象。因此,除了两个更新查询之外,仅运行一个是最新/最后一个更新语句,并且只有该更改才会反映在数据库中。