我从我的控制器中的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
Long
,id
String
,name
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
类。
答案 0 :(得分:0)
我实际上没有给出适当的注释。在控制器中调用服务时,未将@Autowired
放在UserService
上。使用注释我的问题就消失了。