#java #sorting #jpa #pagination #repository
Вопрос:
У меня есть 2 сущности, определенные, как показано ниже, имеющие от одной до многих ассоциаций от a до b.
public class aEntity {
@Id
@Column(name = "id")
private Long id;
@Column(name = "user_id")
private Long userId;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "a", orphanRemoval = true, cascade = CascadeType.ALL)
private Set<bEntity> b;
}
public class bEntity {
@Id
@Column(name = "id")
private Long id;
@Column(name = "created_ts")
private Instant createdTimestamp;
@ManyToOne(fetch= FetchType.LAZY, optional=false)
@JoinColumn(name="a_id", foreignKey = @ForeignKey(name = "fk_b_a"))
@NotNull
private aEntity a;
}
@Validated
public interface aRepository
extends JpaRepository<aEntity, Long>, JpaSpecificationExecutor<aEntity> {
}
У меня есть требование, чтобы все элементы(постраничные) были отсортированы по максимуму последней отметки времени их соответствующих элементов.
Попробовал нижеприведенный подход
Sort sort = Sort.by(Sort.Direction.DESC, "b.updatedTimestamp");
PageRequest pageRequest = PageRequest.of(page, MESSAGES_PER_PAGE, sort);
aRepository.findAll(pageRequest);
который вернул дубликаты записей.