我正在将 JPA2.0 与 Hibernate 一起使用。
例如,我有下表的 JPA 实体:
User [userId, userName, userAddress]
我可以使用 find() 方法获取用户实体:
User user = entityManager.find(User.class , 1L); // 1L is user id
现在,如果我在上面获取的同一用户实体上更改任何用户的状态(比如说用户名):
user.setUserName("Narendra");
并使用 merge() 方法执行合并:
entityManager.merge(user);
通过以下查询成功执行合并,该查询在合并时由 JPA/hibernate 触发:
Hibernate: update User set USERID =?, USERNAME=?, USERADDRESS=? where USERID=?
我的问题是,如果我只更改了用户实体中的用户名状态,我没有更改 userId、userAddress 等。JPA 应该在查询下方触发(只是为了更改 userName)而不是在查询上方触发。
Hibernate: update User set USERNAME=? where USERID=?
有什么想法吗?