Java JPA2锁定模式问题

Java JPA2锁定模式问题,java,mysql,locking,persistence,jpa-2.0,Java,Mysql,Locking,Persistence,Jpa 2.0,亲爱的朋友们,我正在尝试使用Mysql和JPA2 Persience在我的webApp上使用锁定模式。我想用悲观.WRITE模式锁定记录,因此如果用户a尝试修改记录,同时用户B尝试修改同一记录,则可能会出现一条消息,并显示“此记录正在使用中。请稍后重试”。为此,我有一个数据表,当用户想要修改记录时,他可以选择它并单击“编辑按钮”,然后我有以下代码: public void setLockMode(Nominativi nom) { //Nominativi nom is the reco

亲爱的朋友们,我正在尝试使用Mysql和JPA2 Persience在我的webApp上使用锁定模式。我想用悲观.WRITE模式锁定记录,因此如果用户a尝试修改记录,同时用户B尝试修改同一记录,则可能会出现一条消息,并显示“此记录正在使用中。请稍后重试”。为此,我有一个数据表,当用户想要修改记录时,他可以选择它并单击“编辑按钮”,然后我有以下代码:

public void setLockMode(Nominativi nom) {
    //Nominativi nom is the record that user selected from datatable
    Nominativi n=em.find(Nominativi.class, nom.getIdnominativi(), LockModeType.PESSIMISTIC_WRITE);       
} 
因此,用户可以看到一个对话框页面,在其中他可以修改记录值。然后单击“保存按钮”并获得以下代码:

public void update(Nominativi nom) {
    em.merge(nom);
    em.flush();
}
我知道flush()之后,记录不再被锁定,其他用户可以使用它。
因此,当我试图编辑来自两个不同会话(同一台PC上的两个不同浏览器)的同一记录时,我可以同时编辑该记录,没有任何异常。我的错在哪里?我可以在同一台PC上使用两个不同的浏览器会话模拟simoultaneos行为吗?

您的持久性上下文是否具有正确的范围?我从未指定过它,因此我认为它是默认的(事务)。这可能是个问题?我不知道,只是在这里猜测;也许这两个会话的交错是这样的:当第二个会话启动时,第一个会话已经完成,释放了锁?如果您使用Java EE,您是否为您的用户会话使用
@Stateful
EJB?不,它们都是@Stateless。。。。。