我正在使用Jpa来操作mysql数据库; 我将每个布尔属性绑定到复选框,这样当我选中/取消选中它时,属性的状态将会改变..
了解我的应用程序的外观:
屏幕中的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并尝试重现此错误...
有什么建议吗? 欢呼声。
答案 0 :(得分:0)
我发现了问题,我正在使用两个不同的EntityManger,我们说em1
和em2
。
我在我的代码中做的是使用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);
现在它工作正常。