SpringデータJPA仕様を使用してエンティティPersonからリストを取得する際に問題があります(ページネーションのため)。個人ごとにすべてのメモを取得する必要がありますが、これら 2 つのエンティティ間の依存関係は個人側にあります。Note には Person に関連する属性が含まれていないため、Predicate の作成方法がわかりません。
Persons getter を使用して List を取得することはできますが、返されたデータをページ分割する必要があるため、この方法は使用できません。
@Entity
public class Person implements Serializable {
@Id
private Long personId;
@OneToMany
@JoinColumn(name = "personId")
private List<Note> notes;
}
@Entity
public class Note implements Serializable {
@Id
private Long noteId;
}
通常はこのように記述しますが、Note に person という属性がなく、この段階でデータベースを再マップすることはできません。
public static Specification<Note> notesByPerson(final Long personId) {
return new Specification<Note>() {
@Override
public Predicate toPredicate(final Root<Note> root, final CriteriaQuery<?> query,
final CriteriaBuilder builder) {
final Path<Person> per = root.<Person> get("person");
return builder.equal(per.<Long> get("personId"), personId);
}
};
}
ありがとう、ズデント