【发布时间】:2020-04-12 21:22:33
【问题描述】:
当我想通过 JPQL 修改数据库时,我必须将查询标记为 Transactional 和 Modiyfing。如果我这样做,表示查询的方法的返回类型必须是void 或int(表示我认为的已编辑行数)。为什么只允许两种返回类型?如果我执行 HTTP-PUT 请求并使用自己的 JPQL 查询更新对象,我想再次返回更新后的对象。如果查询的返回类型必须是void 或int,那么最好的方法是什么?我是否必须再次执行单独的查询/请求来选择更新后的对象?
编辑:
这就是我调用查询的方式:
if (inactivityListDTO.getProjectIds().size() > 0) {
projectRepository.updateProjectsIsArchivedByProjectIds(inactivityListDTO.getProjectIds(), inactivityListDTO.getIsArchived());
}
这是查询:
@Transactional
@Modifying
@Query("UPDATE Project project SET project.isArchived = :isArchived,
project.archivedDate = current_date " +
"WHERE project.id IN :ids")
void updateProjectsIsArchivedByProjectIds(@Param("ids") List<Long> ids, @Param("isArchived") boolean isArchived);
【问题讨论】: