实体管理器.createQuery()。executeUpdate()是否会立即在数据库上执行?

时间:2018-10-28 22:28:13

标签: java mysql hibernate jpa

我正在使用休眠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)

返回值将反映数据库中已更改的行还是仅反映持久性上下文?

0 个答案:

没有答案