JPARepository findAll() 循环数据
JPARepository findAll() loop data
我有 3 个实体:
SLUSER_INFO(SLUSER_INFO_ID, FULLNAME, FIRSTNAME, LASTNAME, ADDRESS, DOB)
SLUSER(SLUSER_ID, PASSWORD, USERNAME, SLUSER_INFO_ID)
SLROLE(SLROLE_ID, ROLENAME, SLUSER_ID)
在用户实体中:
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonView(SlUserView.Full.class)
private List<SlRole> roles;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "SLUSER_INFO_ID", referencedColumnName = "SLUSER_INFO_ID")
@JsonView(SlUserView.Full.class)
private SlUserInfo userInfo;
在角色实体中:
@ManyToOne
@JoinColumn(name = "SLUSER_ID", referencedColumnName = "SLUSER_ID")
private SlUser user;
和User_info实体
@OneToOne(mappedBy = "userInfo")
private SlUser user;
我创建其余 api 以使用 JPARepository findAll
获取所有用户
@Repository
public interface SlUserRepository extends JpaRepository<SlUser, Long> {
}
控制器
public ResponseEntity<Page<SlUser>> findAll(Pageable pageable) {
Page<SlUser> pageResult = usersRepository.findAll(pageable);
return new ResponseEntity<Page<SlUser>>(pageResult, HttpStatus.OK);
}
尝试运行其余api,结果是重复数据
{"content":[{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"", "firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user": {"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}], "userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password" :"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id": 1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles": [{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username": "v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1" ,"dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":" ","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1 ,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce" ,"lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"} ],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar", "address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"", "firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user": {"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001" ,"password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{ "id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin", "roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName" :"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id" :1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":
请多多指教
错误是因为 User
和 Roles
之间的双向关系。
在 User
实体的 roles
上使用 @JsonIgnore
。
我有 3 个实体:
SLUSER_INFO(SLUSER_INFO_ID, FULLNAME, FIRSTNAME, LASTNAME, ADDRESS, DOB)
SLUSER(SLUSER_ID, PASSWORD, USERNAME, SLUSER_INFO_ID)
SLROLE(SLROLE_ID, ROLENAME, SLUSER_ID)
在用户实体中:
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonView(SlUserView.Full.class)
private List<SlRole> roles;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "SLUSER_INFO_ID", referencedColumnName = "SLUSER_INFO_ID")
@JsonView(SlUserView.Full.class)
private SlUserInfo userInfo;
在角色实体中:
@ManyToOne
@JoinColumn(name = "SLUSER_ID", referencedColumnName = "SLUSER_ID")
private SlUser user;
和User_info实体
@OneToOne(mappedBy = "userInfo")
private SlUser user;
我创建其余 api 以使用 JPARepository findAll
获取所有用户@Repository
public interface SlUserRepository extends JpaRepository<SlUser, Long> {
}
控制器
public ResponseEntity<Page<SlUser>> findAll(Pageable pageable) {
Page<SlUser> pageResult = usersRepository.findAll(pageable);
return new ResponseEntity<Page<SlUser>>(pageResult, HttpStatus.OK);
}
尝试运行其余api,结果是重复数据
{"content":[{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"", "firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user": {"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}], "userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password" :"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id": 1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles": [{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username": "v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1" ,"dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":" ","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1 ,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce" ,"lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"} ],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar", "address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"", "firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user": {"id":1,"username":"v7001","password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001" ,"password":"admin","roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{ "id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin", "roles":[{"id":1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName" :"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":{"id":1,"username":"v7001","password":"admin","roles":[{"id" :1,"roleName":"ADMIN"}],"userInfo":{"id":1,"fullName":"","firstName":"Jayce","lastName":"Sonar","address":"ad1","dob":null,"user":
请多多指教
错误是因为 User
和 Roles
之间的双向关系。
在 User
实体的 roles
上使用 @JsonIgnore
。