休眠@Transactional

时间:2018-07-23 18:36:41

标签: java spring hibernate jpa spring-transactions

我是冬眠的新人,如何在春季使用@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注释。

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

是否更新了同一行而不是两个不同的行?如果您是错的,那么请考虑@Transactional批注定义附加到持久性上下文的单个事务的范围。

因此,当您使用相同的对象(设置或更改)时,假设该对象的属性不同,则底层JPA会检测到它基本上就是您要更新的同一对象。因此,除了两个更新查询之外,仅运行一个是最新/最后一个更新语句,并且只有该更改才会反映在数据库中。