从控制器中获取最后插入的生成ID,Spring。

3

这是我的控制器,它将表单数据保存到数据库中:

@RequestMapping(value = "/user/newUser", method = RequestMethod.POST)
public ModelAndView createNewSurvey(@Valid User user, BindingResult bindingResult) {
    ModelAndView modelAndView = new ModelAndView();
    userService.saveUser(user);
    modelAndView.addObject("successMessage", "Added user!");
    modelAndView.addObject("user", new User());
    modelAndView.setViewName("user/newUser");
    return modelAndView;
}

调用saveUser之后,在此控制器中如何获取生成的用户ID,以便我可以使用它调用另一个函数? 谢谢
编辑:
UserService实现:
@Service("userService")
public class UserServiceImpl implements UserService {

@Autowired
private UserRepository userRepository;
@Override
public void saveUser(User user) {
    userRepository.save(user);
}

你能否在userService和用于保存用户的dao中发布你的代码?此外,在你的实体中,你是如何生成Id的?你使用什么策略,例如@GeneratedValue(strategy = GenerationType.AUTO)? - Periklis Douvitsas
我添加了服务实现。是的,@Id @GeneratedValue(strategy = GenerationType.AUTO) 是我生成它的方式。 - user8705545
1个回答

3

请尝试以下方法,如果对您有用,请告诉我:

@Override
public User saveUser(User user) {
    return userRepository.save(user);
}

同时还需要将UserService接口的接口方法更改为返回User。

public User saveUser(User user);

然后在控制器中,只需调用返回的UserObject的getId()。

User newUser = userService.saveUser(user);
newUser.getId();

如果您在用户对象中未指定用户ID,并且此ID列是数据库中的自动递增字段,则您的函数将始终返回0。 - Diaf Badreddine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接