0

我在使用 Oracle 数据库时遇到问题。我正在尝试更新实体并将更新的实体传递给同一事务中的另一个方法。这适用mysql于数据库,但不适用于Oracle数据库。

实体类

public class EntityA
{
    private Long id;

    @Version
    private Integer versionNo;
    //getters and setters
}

@Transactional //From Spring
public class EntityService
{
    @Inject
    @Named("myService")
    private MyService service;

    public void modify(final EntityA data)
    {
        EntityA entity = persistenceManager.merge(data);
        service.serializeEntity(entity);
    }
}

所以问题是,在persistenceManager.merge(data);被调用之前,该versionNo字段仍然为零。在调用 之后,返回的对象 ie 中persistenceManager.merge(data);的字段值仍然为零。然后将该对象传递给将对象序列化为零的对象。但是在方法ie返回后,数据库中的. 有没有办法在将未提交的修改传递给之前获取它,因为我需要序列化修改后的对象。versionNoentityservice.serializeEntity(entity);versionNoupdateversionNo1EntityAservice.serializeEntity(entity);

4

1 回答 1

1

你可以试试打电话

persistenceManager.flush();

通话后merge()

即使事务尚未提交,这也会强制更新数据库。

于 2013-08-12T15:52:10.520 回答