別のオブジェクトを介してオブジェクトへのアクセス

levivah940:

私は3つのクラスがありますUserUserCategoryPatientCase

さて、いくつかの方法で私は、現在ログインしているユーザーに属するカテゴリやケースをかどうかを確認する必要があります。

ユーザー:

private Long id;
private String firstName;
private String lastName;
private String emailAddress;
private String password;
private Set<UserCategory> userCategories;

UserCategory:

private Long id;
private String name;
private User user;
private Set<PatientCase> cases;

PatientCase:

private Long id;
private String caseTitle;
private LocalDate caseDate;
private Set<UserCategory> userCategories;

今のユーザーとカテゴリを与え、私はカテゴリがありませんか(この場合には、私は、ユーザーに属していないやっている)これを行うことにより、ユーザーに属していないかどうかを確認することができます:

private boolean checkIfCategoryDoesNotBelongToUser(UserCategory category, User user) {
    return !category.getUser().getId().equals(user.getId());
}

問題があれば、私が言うことができるかであるPatientCaseか、またはユーザーに属していません。そして、私はクラスに他のフィールドを追加することは許されないのです。私のような何かを考えていました。

private boolean checkIfCaseDoesNotBelongToUser(PatientCase patientCase, User user) {
    return !patientCase.getUserCategories()
            .stream()
            .filter(c -> c.getUser().getId().equals(user.getId()))
            .

また、私は、フィルタが実際ので、多分ブール値を返さないことに注意してくださいねnoneMatchしかし、本当にわかりません。

基本的には、患者のケースは、複数のカテゴリに属する​​ことができます。そして、ユーザーが複数のカテゴリを持つことができます。何かを提案してください。

スイーパー:

あなたは、実際に使用することができますnoneMatch

private boolean checkIfCaseDoesNotBelongToUser(PatientCase patientCase, User user) {
    return patientCase.getUserCategories()
        .stream()
        .noneMatch(c -> c.getUser().getId().equals(user.getId()));
}

noneMatchそれが返されますので、短絡であるfalseとすぐに1つの一致が見つかったとして。


また、私はあなたが私はむしろ書きたいので、負のあなたの方法に名前を付けていないお勧めcheckIfCaseBelongToUser(使用をanyMatch!)と、発信者が使ってみましょう!、それを否定します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=372878&siteId=1