实体管理器merge(),然后刷新

时间:2015-04-09 07:09:39

标签: java-ee jpa merge entitymanager

我很难使用实体管理器和合并功能。

我有一个包含用户表的MySQL数据库,该用户表有一个触发器。当您更新(或插入)用户时,触发器会创建一个随机盐,然后SHA1创建密码+ salt。

当我想要更新用户时会出现问题。在我的servlet中,我调用了SessionBean方法updateUser(User u),该方法只包含return em.merge(u)

当我调试时,我查看新密码,它不是SHA1,它看起来很清楚(但它被修改了)。在数据库中,密码是SHA1,生成盐,但不在应用程序中。

我的问题是,我需要做些什么才能刷新用户并将密码设置为新用户? 我发现的唯一解决方案是重新启动应用程序,但它根本不方便,我无法部署需要重新启动的解决方案......

PS:我已经尝试了flush(),我无法执行Transactional,我正在使用NetBeans(自动生成的类和SessionBeans),而我正在使用它。我正在学习Java EE,所以我没有那么多的知识。此外,我试图在修改后从数据库中获取用户,但密码仍然清晰。

1 个答案:

答案 0 :(得分:0)

entityManager具有函数refresh,可以将您的实体状态刷新为状态表单DB。此外,您可以在persistence.xml文件中配置catch模式:specifying the Cache Mode Settings to Improve Performance到适合您的模式。