【发布时间】:2016-02-25 22:23:25
【问题描述】:
我正在使用 UserRepository 中的@Query 更新 LOGIN 对象中的字段,然后立即进行查找以选择登录对象,数据未刷新。我确实在数据库中看到了更新的记录。如果我反弹我的 tomcat 服务器,转到浏览器上的页面,我将看到刷新的数据。 如下图,我将LOGIN.enabled更新为1(updateUserLoginEnableByUuid())然后调用findByLoginLoginEmail(),LOGIN.enable仍然显示为0。 似乎旧记录仍然缓存在某个地方,我错过了什么?
在 UserConroller.java 中:
@RequestMapping(value = "/user/enableUser/{userUuid}", method = RequestMethod.GET)
public String enableUser(Model aaModel, @PathVariable("userUuid") String userUuid, Principal aaPrincipal, SessionStatus aaStatus) {
this.caService.updateUserLoginEnableByUuid(userUuid, (byte) 1);
aaStatus.setComplete();
return "redirect:/login";
}
在 userRepository.java 中,
@Modifying // Indicates a method should be regarded as modifying query.
@Query("update Login l SET l.enabled = :enabled WHERE l.user.uuid = :uuid")
int updateUserLoginEnableByUuid(@Param("uuid") String uuid, @Param("enabled") byte enabled);
User findByLoginLoginEmail(String loginEmail);
【问题讨论】:
-
数据没有刷新——哪里没有刷新?
-
我将 LOGIN.enabled 更新为 1 (updateUserLoginEnableByUuid()) 然后调用 findByLoginLoginEmail(),LOGIN.enable 仍然显示为 0。
-
所以在 enableuser 上做一个 GET,然后在重定向之后,大概是当用户尝试登录时,登录失败?如果开启show SQL,什么时候发送SQL?何时提交数据?
标签: spring-mvc jpa spring-security spring-data-jpa