休息服务返回后,持久数据发生了变化

时间:2016-12-19 16:29:00

标签: java hibernate rest jta

我有一个REST服务,它使用无状态bean通过使用其他bean来执行算法。 所有这些bean都对我的数据字段进行了更改,包括ManyToOne字段。 在算法结束时,就在我的休息服务“返回”之前,我的数据处于正确的状态,并且所讨论的ManyToOne字段已被更改。 但是在返回休息服务之后,该字段上似乎发生了更新,并将其更改回以前的状态。但其他领域仍处于正确状态。

在我的休息服务“返回”后,有什么可能改变我的数据?

该项目在wildfly环境中使用hibernate和JTA事务。

数据如下所示:

public class Data extends JpaDecorator {
    @Column(length=1024)
    @Override
    public String getCommentaire() {
        return getImpl().getCommentaire();
    }

    @Column(length=1024)
    @Override
    public void setCommentaire(String value) {
        getImpl().setCommentaire(value);
    }
}

@MappedSuperclass
public class JpaDecorator<T> {

    private WorkspaceJpa workspaceJpa;

    private T impl;

    @Transient
    public T getImpl() {
        return impl;
    }

    @ManyToOne
    @JoinColumn(name = "wid", referencedColumnName = "oid")
    public WorkspaceJpa getJpaWid() {
        return this.workspaceJpa;
    }

    public void setJpaWid(WorkspaceJpa value) {
        this.workspaceJpa = value;

        Workspace wks = ((this.workspaceJpa != null) ? this.workspaceJpa.getImpl() : null);
        getImpl().setWid(wks);
    }

}

编辑: 我终于解决了这个问题。它来自用于在算法开始时收集数据的未闭合事务。该事务一直处于活动状态,直到返回其余服务,然后被迫结束并刷新其数据的状态,这已经过时了。

0 个答案:

没有答案