我正在使用休眠jpa。我正在尝试执行更新查询,并想根据返回值判断更新是否实际发生,因为我可能有多个进程执行相同的更新,而我只想继续成功更新记录的过程。 (如果更新成功,则依靠mysql返回1,如果没有任何更改,则返回0。)
int update = entityManager.createQuery("update Employee set name = \'xxxx\' where id=1").executeUpdate();
我的问题是,在默认刷新模式(AUTO
)下,此查询是否将在数据库上执行? (如果不是,返回值仍然有意义吗?)冲洗模式= COMMIT
呢?我需要做entityManager.flush()吗? (我感觉查询执行将绕过entityManager,因此冲洗不执行任何操作?)
如果我使用JPA存储库而不是本机查询怎么办?
@Modifying
@Query("UPDATE Employee SET name = :name WHERE id = :id)
int update(long id, String name)
返回值将反映数据库中已更改的行还是仅反映持久性上下文?