但是更新适用于以下代码段
Department department= departmentRepository.findOne(300L);
department.setName("rajiv");
departmentRepository.saveAndFlush(department);
但是这种情况是单调映射,可能是我最终遇到3个查询的情况,其中包括2个选择查询和一个更新查询。 为了优化我的更新方式,我尝试使用这种不会更新的方式,因为executeUpdate()将受影响的行返回为1。
答案 0 :(得分:0)
您的查询中有一个小错误。
您已使用 = 运算符,而应使用 like 运算符
您还可以获取 @NamedNativeQueries
的帮助示例
DepartmentRepository.java
@Query(nativeQuery = true)
public List<Department> update(Long id);
Department.java
@SqlResultSetMapping(name="updateResult", columns = { @ColumnResult(name = "count")})
@NamedNativeQueries({
@NamedNativeQuery(
name = "Department.update",
query = "UPDATE departmemnt SET name like 'rajiv' WHERE id = ?",
resultSetMapping = "updateResult")
})
NativeQueries的运行速度比普通的Hibernate Queries
答案 1 :(得分:0)
是的,这可能会有所帮助,在春季数据的情况下,我找到了一种使其可更新的方法,因为他们坚持使用@transactional并扩展了jparepository的功能,现在仅命中了一条语句
@Modifying(clearAutomatically = true)
@Transactional(readOnly=false)
@Query("update Department d set d.name =:name where d.id=:id")
int update(@Param("name")String name,@Param("id")Long id);
如果我选择使用nativeQuery
@Modifying(clearAutomatically = true)
@Transactional(readOnly=false)
@Query(value="update Department d set d.name =:name where d.id=:id",nativeQuery=true)
int update(@Param("name")String name,@Param("id")Long id);