JPA提交Oracle的问题

时间:2013-08-12 15:30:14

标签: java oracle jpa

我遇到了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字段仍为零。调用persistenceManager.merge(data);后,返回对象中的versionNo字段值entity仍然为零。然后将此对象传递给service.serializeEntity(entity);versionNo将对象序列化为update零。但是,在方法versionNo返回后,数据库中的1将更改为EntityA。有没有办法在将未提交的修改后的service.serializeEntity(entity);传递给{{1}}之前获取它,因为我需要序列化修改后的对象。

1 个答案:

答案 0 :(得分:1)

您可以尝试拨打

persistenceManager.flush();
merge()电话之后

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