두 테이블이 아래와 같이 일대일 관계 인 User
과 Roles
이 있습니다.자바 목록리스트 반복하기
User
_________________________________________
| Id | user_name | full_name | creator |
_________________________________________
| 1 | a | A | a |
| 2 | b | B | a |
| 3 | c | C | a |
| 4 | d | D | c |
| 5 | e | E | c |
| 6 | f | F | e |
| 7 | g | G | e |
| 8 | h | H | e |
| 9 | i | I | e |
|10 | j | J | i |
_________________________________________
Roles
_______________________________________
| id | user_mgmt | others | user_id |
_______________________________________
| 1 | 1 | 1 | 1 |
| 2 | 0 | 1 | 2 |
| 3 | 1 | 0 | 3 |
| 4 | 0 | 1 | 4 |
| 5 | 1 | 1 | 5 |
| 6 | 0 | 1 | 6 |
| 7 | 0 | 0 | 7 |
| 8 | 0 | 0 | 8 |
| 9 | 1 | 0 | 9 |
________________________________________
Roles
테이블 boolean
열이, 그래서 User
이 user_mgmt
역할이 있으면 그는 많은 사용자를 추가 할 수 있습니다 (AN 사용자가 추가 할 수있는 사용자 명확한 아니다). 사용자와 자식 사용자가 만든 모든 사용자를 가져 오려고합니다 (a는 부모, c는 a의 자식이며 e는 c ..의 자식입니다).
public void loadUsers(){
List<Users> users = new ArrayList<>();
String creator = user.getUserName();
List<Users> createdUsers = userService.getUsersByCreator(creator);
for(Users user : createdUsers) {
Roles role = createdUsers.getRoles();
if(role.isEmpMgnt()){
users.add(user);
loadUsers();
}
}
}
를 가져 내 코드입니다. loadUsers()
을 재귀 적으로 호출하지 않으면 단일 하위 결과 만 반환합니다. 그래서 거기에 어떤 해결책이 있습니까? 사전에 도움을 주셔서 감사합니다.
모든 통화에 대해 사용자 배열을 다시 초기화합니다. 목록은 항상 비어있게됩니다. 사용자가 생성자인지 먼저 확인한 다음 for 루프 내부가 아닌 getUsersByCreator 메서드를 호출해야합니다. 코드를 정리할 필요가 있습니다.이 디자인은 메모리 누수로 인해 열리게됩니다. –