levivah940:
私は3つのクラスがありますUser
、UserCategory
とPatientCase
。
さて、いくつかの方法で私は、現在ログインしているユーザーに属するカテゴリやケースをかどうかを確認する必要があります。
ユーザー:
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
!)と、発信者が使ってみましょう!
、それを否定します。