将Jpa与Eclipselink一起用作我的提供者和Derby db。 我有一个看起来像这样的方法:
public void changeIndivid(long s,long id){
et.begin();
Individ C=em.find(Individ.class, id);
System.out.println(C.s);
C.s=s;
System.out.println(C.s);
em.flush();
System.out.println(C.s);
et.commit();
System.out.println(C.s);
em.merge(C);
System.out.println(C.s);
}
并使用一些测试数据,其中每行中的s
列有1,然后我调用此方法更改其中一行,以便s
列为2.这是打印输出:< / p>
1
2
2
2
2
显然它可以工作,但是当我使用SQuirreL打开数据库时,s
列中的所有行都有1个。
ETA:我已尝试使用和不使用flush()和merge()中的任何一个或两者,并且在提交之前和之后进行了合并,从不抛出任何异常或更新行。
ETA2:这是打印输出,记录级别为ALL(删除后#34; [EL Finer]:transaction:2016-03-29 15:03:40.077 - UnitOfWork(1569403232) - Thread(Thread [Thread] -2,5,main])&#34;来自记录的所有行:
--Execute query ReadObjectQuery(name="readIndivid" referenceClass=Individ sql="SELECT ID, S, TESTED, GENERATION_ID FROM INDIVID WHERE (ID = ?)")
1
2
--begin unit of work flush
--end unit of work flush
2
--begin unit of work commit
--end unit of work commit
--resume unit of work
2
--Merge clone with references nv3.nn.db.Individ@3b6c64f3
2