findOne(id)Spring Repository返回null

时间:2017-09-27 21:11:06

标签: java spring spring-boot

我从我的控制器中的URL获取作为参数传递的id,然后我希望能够获得具有该id的用户的名称。 我有UserService具有此功能:

public User getUserById(long id);

此功能的实现是:

@Autowired
private UserRepository userRepository;
@Override
public User getUserById(long id) {
    return userRepository.findOne(id);
}

这是我想要访问它的控制器:

@RequestMapping(value = "/user", method = RequestMethod.GET, params = {"getId"})
@ResponseBody
public ModelAndView getClientStat(@RequestParam(value="getId", required = true) String getId) {
    ModelAndView modelAndView = new ModelAndView();

    long userId=0;
    userId=Long.parseLong(getId);
    User u=userService.getUserById(userId);
    modelAndView.addObject("id", u.getName());
    modelAndView.setViewName("user");
    return modelAndView;
}

我有User Longid Stringname String和getter and setters的实体lastName为每个人。 但是在运行此代码时,它会返回空指针异常,它来自我调用getUserId(userId)的部分。 这是我的用户实体:

@Entity
public class User{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private Long id;    

    ... 
}

和用户存储库:

@Repository("userRepository")
public interface UserRepository extends JpaRepository<User,Long> {
}

我该如何解决这个问题?

服务界面:

public interface UserService{
    public List<User> getAllUsers();
    public User getUserById(long id);
}

在我的控制器中我有:

@Autowired
private AdminService adminService;

private UserService userService;

使用的注释可能是错误吗?我应该在UserService类中使用注释吗? @Service注释用于UserServiceImpl类。

1 个答案:

答案 0 :(得分:0)

我实际上没有给出适当的注释。在控制器中调用服务时,未将@Autowired放在UserService上。使用注释我的问题就消失了。