2017-05-12 4 views
0

状況:すべての人を休憩サービスとして取得しようとしています。しかし、問題は、クラスPersonが自分で人を持っているということです(Friends)。だから私はのみの友人のユーザ名を取得していますことを双方向オブジェクトで休憩サービスをする

`{"naam":"Lance","voornaam":"ADAM","email":"[email protected]","password":"fxSg1vSa2zzqHxuTCrDSbtp9ITlHf9ALSnS/ENFXfAA=$7vSVqz5nHZ7cEA4u6OiTBDw+CGaOJkhun4YuievZCKc=","username":"adam","status":"online","posts":[{"message":"Ik heb mijn eerste auto gekocht.","mood":"trots","when":1494603638834},"role":"ADMIN","friends":[{"username":"adamsFriend1"},{"username":"adamsFriend2"}] 

:だから私は

は、結果は私が目指していた...友人接続の原因、無限に長いJSONを取得しています。これが不可能な場合は、それらの友人をexcecludeする方法はありますか?

Restcontroller:

@RestController 
@RequestMapping(value = "/users") 
public class UsersRestController { 

private final Service service; 

public UsersRestController(@Autowired Service service) { 
    this.service = service; 

} 

@RequestMapping(method = RequestMethod.GET) 
public List<Person> getUsers() { 
    return service.getAllPersons(); 
} 

@RequestMapping(value = "/{id}", method = RequestMethod.GET) 
public Person getUser(@PathVariable String id) { 
    return service.getPerson(id); 
} 

} 

Personクラス:

@Entity 
public class Person { 

private String naam, voornaam, email, password; 

@Id 
private String username; 
private String status; 

@ManyToMany 
private Collection<Person> vrienden; 

@OneToMany(orphanRemoval = true) 
private Collection<Post> posts; 

@Enumerated(EnumType.STRING) 
private Role role; 

public Person(String naam, String voornaam, String email, String password, String username) { 
    setNaam(naam); 
    setEmail(email); 
    setStatus("online"); 
    setVoornaam(voornaam); 
    setPassword(password); 
    setUsername(username); 
    vrienden = new HashSet<>(); 
    posts = new HashSet<>(); 
    role = Role.USER; 
} 

public static void addFriend(Person a, Person b) { 
    a.addFriend(b); 
    b.addFriend(a); 
} 

private void addFriend(Person b) { 
    this.vrienden.add(b); 
} 

public static void deleteFriend(Person a, Person b) { 
    a.deleteFriend(b); 
    b.deleteFriend(a); 
} 

private void deleteFriend(Person a) { 
    this.vrienden.remove(a); 
} 

public Collection<Person> getFriends() { 
    return vrienden; 
} 

public Role getRole() { 
    return this.role; 
} 

public void setRole(Role role) { 
    this.role = role; 
} 

@NotNull(message = "{error.no.name}") 
@Size(min = 2, message = "{error.invalid.namesize}") 
public String getNaam() { 
    return naam; 
} 

public void setNaam(String naam) { 

    this.naam = naam; 
} 

@NotNull(message = "{error.no.surnaam}") 
@Size(min = 2, message = "{error.invalid.surnamesize}") 
public String getVoornaam() { 
    return voornaam; 
} 

public void setVoornaam(String voornaam) { 

    this.voornaam = voornaam; 
} 

@NotNull(message = "{error.no.email}") 
@Email(message = "{error.invalid.email}") 
public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

@NotNull(message = "{error.no.status}") 
@Size(min = 1, message = "{error.no.valid.status}") 
public String getStatus() { 
    return status; 
} 

public void setStatus(String status) { 

    this.status = status; 
} 

@NotNull(message = "{error.no.username}") 
@Size(min = 2, message = "{error.invalid.usernamesize}") 
public String getUsername() { 
    return username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public void setPassword(String password) { 
     this.password = Password.getSaltedHash(password); 
} 

public boolean isPasswordCorrect(String password) { 
    boolean result = false; 
     result = Password.check(password, this.password);  
    return result; 
} 

@NotNull(message = "{error.no.password}") 
@Size(min = 2, message = "{error.invalid.usernamesize}") 
public String getPassword() { 
    return this.password; 
} 



public void addPost(Post p) { 
    if (p == null) { 
     throw new DomainException("Post is null"); 
    } 
    posts.add(p); 
} 

public void deletePost(Post p) { 
    if (p == null) { 
     throw new DomainException("Post is null"); 
    } 
    posts.remove(p); 
} 

public Collection<Post> getPosts() { 
    return posts; 
} 

@Override 
public int hashCode() { 
    int hash = 3; 
    hash = 59 * hash + Objects.hashCode(this.username); 
    return hash; 
} 

public void setHashedPassword(String password) { 
    this.password = password; 
} 

} 

答えて

0

は、ちょうど人のためのラッパークラスを作りました。おそらくもっと良い方法があります...。 しかし、あなたがintrestedている場合、このラッパークラスです:

public class WrapPerson { 

private String naam; 
private String voornaam; 
private String email; 
private String username; 
private String status; 

private Collection<String> vrienden; 
private Collection<Post> posts; 

public WrapPerson(Person person) { 
    setEmail(person.getEmail()); 
    setNaam(person.getNaam()); 
    setPosts(person.getPosts()); 
    setStatus(person.getStatus()); 
    setUsername(person.getUsername()); 
    setVoornaam(person.getVoornaam()); 
    this.vrienden = new ArrayList<>(); 
    for (Person p : person.getFriends()) { 
     this.vrienden.add(p.getUsername()); 
    } 
} 

public String getNaam() { 
    return naam; 
} 

public void setNaam(String naam) { 
    this.naam = naam; 
} 

public String getVoornaam() { 
    return voornaam; 
} 

public void setVoornaam(String voornaam) { 
    this.voornaam = voornaam; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public String getUsername() { 
    return username; 
} 

public void setUsername(String username) { 
    this.username = username; 
} 

public String getStatus() { 
    return status; 
} 

public void setStatus(String status) { 
    this.status = status; 
} 

public Collection<String> getVrienden() { 
    return vrienden; 
} 

public void setVrienden(Collection<String> vrienden) { 
    this.vrienden = vrienden; 
} 

public Collection<Post> getPosts() { 
    return posts; 
} 

public void setPosts(Collection<Post> posts) { 
    this.posts = posts; 
} 

} 

`

関連する問題