Java CrudRespository未获取所需列表,而是看到PersistentBag错误
我有一个简单的RestController,它通过扩展org.springframework.data.repository.paging和sortingrepository接口,在调用数据库之后返回一个用户对象 现在的挑战是,当我调用UserObject时,addresses返回Persistentbag Error 发生错误异常:com.sun.jdi.InvocationException调用方法时发生Java CrudRespository未获取所需列表,而是看到PersistentBag错误,java,spring-boot,modelmapper,Java,Spring Boot,Modelmapper,我有一个简单的RestController,它通过扩展org.springframework.data.repository.paging和sortingrepository接口,在调用数据库之后返回一个用户对象 现在的挑战是,当我调用UserObject时,addresses返回Persistentbag Error 发生错误异常:com.sun.jdi.InvocationException调用方法时发生 @实体(name=“users”) 公共类UserEntity实现可序列化{ 私有静
@实体(name=“users”)
公共类UserEntity实现可序列化{
私有静态最终长serialVersionUID=-2675537776836756234L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@OneToMany(fetch=FetchType.LAZY,mappedBy=“userDetails”,cascade=CascadeType.ALL)
私有列表地址=新的ArrayList();
//构造函数、getter、setter和toString()
}
@实体(名称=“地址”)
公共类AddressEntity实现可序列化{
私有静态最终长serialVersionUID=4209374923046988553L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私人长id;
@许多酮
@JoinColumn(name=“users\u id”)
私有用户实体用户详细信息;
//构造函数、getter、setter和toString()
}
和控制器
@RequestMapping(value = "/pagedList", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE,
MediaType.APPLICATION_XML_VALUE })
public List<UserRest> getUsers(@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "limit", defaultValue = "25") int limit) {
List<UserRest> returnvalue = new ArrayList<>();
List<UserDTO> userDTO = userService.getUsers(page, limit);
for (UserDTO source : userDTO) {
UserRest target = modelMapper.map(source, UserRest.class);
target.setDate(source.getCreatedAt());
returnvalue.add(target);
}
return returnvalue;
}
@RequestMapping(value=“/pagedList”,method=RequestMethod.GET,products={MediaType.APPLICATION\u JSON\u value,
MediaType.APPLICATION_XML_VALUE})
公共列表getUsers(@RequestParam(value=“page”,defaultValue=“0”)int page,
@RequestParam(value=“limit”,defaultValue=“25”)int limit){
List returnvalue=new ArrayList();
List userDTO=userService.getUsers(第页,限制);
for(UserDTO来源:UserDTO){
UserRest target=modelMapper.map(源,UserRest.class);
target.setDate(source.getCreatedAt());
returnvalue.add(目标);
}
返回值;
}
UserService类:
public List<UserDTO> getUsers(int page, int limit) {
List<UserDTO> returnvalue = new ArrayList<>();
if (page > 0)
page -= 1;
Pageable pageableRequest = PageRequest.of(page, limit);
Page<UserEntity> usersPage = userRepo.findAll(pageableRequest);//Returns Nothing for addresses at this point
List<UserEntity> users = usersPage.getContent();
for (UserEntity source : users) {
returnvalue.add(modelMapper.map(source, UserDTO.class));
}
return returnvalue;
}
公共列表getUsers(整数页,整数限制){
List returnvalue=new ArrayList();
如果(页面>0)
第-=1页;
Pageable pageableRequest=PageRequest.of(第页,限制);
Page usersPage=userRepo.findAll(pageableRequest);//此时不返回任何地址
List users=usersPage.getContent();
for(用户实体来源:用户){
add(modelMapper.map(source,UserDTO.class));
}
返回值;
}
谢谢所以我发现将注释更改为 @OneToMany(fetch=FetchType.EAGER,mappedBy=“userDetails”,cascade=CascadeType.ALL) 解决了这个问题 谢谢大家请发布您的问题,以便其他人更容易找出问题所在。
public List<UserDTO> getUsers(int page, int limit) {
List<UserDTO> returnvalue = new ArrayList<>();
if (page > 0)
page -= 1;
Pageable pageableRequest = PageRequest.of(page, limit);
Page<UserEntity> usersPage = userRepo.findAll(pageableRequest);//Returns Nothing for addresses at this point
List<UserEntity> users = usersPage.getContent();
for (UserEntity source : users) {
returnvalue.add(modelMapper.map(source, UserDTO.class));
}
return returnvalue;
}