提交事务后数据未更新

时间:2013-12-01 02:56:34

标签: java mysql jpa netbeans eclipselink

我正在使用Jpa来操作mysql数据库; 我将每个布尔属性绑定到复选框,这样当我选中/取消选中它时,属性的状态将会改变..

了解我的应用程序的外观: enter image description here

屏幕中的Jtable也绑定到java.util.list< Eleve >,因此更新在Jtable和list(可观察)之间同步。

这基本上是我的Eleve实体:

public class Eleve implements Serializable {
    ...
    @Basic(optional = false)
    @Column(name = "si", nullable = false)
    private boolean si;
    @Basic(optional = false)
    @Column(name = "ci", nullable = false)
    private boolean ci;
    @Basic(optional = false)
    @Column(name = "pi", nullable = false)
    private boolean pi;
    @Basic(optional = false)
    @Column(name = "gi", nullable = false)
    private boolean gi;
    ...

我的问题是有时在检查了一些复选框,持久化然后提交事务(更新)后,数据库中没有更新新状态而没有显示任何错误消息..

修改 我按@ wrschneider99的建议进行了测试,奇怪的问题是属性成功设置为True ..所以没有内存问题.. 我将尝试将数据库更改为H2并尝试重现此错误...

有什么建议吗? 欢呼声。

1 个答案:

答案 0 :(得分:0)

我发现了问题,我正在使用两个不同的EntityManger,我们说em1em2

我在我的代码中做的是使用em1(在应用程序启动时)从数据库中检索所有实体,然后当我创建一个过滤器(查找Eleve的子列表)时,我正在使用 em2 ,因此当我检查一些复选框时,boolean属性会在内存中发生更改,但em1不知道此更改。

  java.util.Collection<Eleve> data = ejc.findEleveByNiveauClasseNomPrenom(niv, classe, nom, prenom);

所以我在我的函数参数中传递了em1

 java.util.Collection<Eleve> data = ejc.findEleveByNiveauClasseNomPrenom(niv, classe, nom, prenom,em1);

现在它工作正常。