I am trying to sort a result by nested collection element value. I have a very simple model:
@Entity
public class User {
@Id
@NotNull
@Column(name = "userid")
private Long id;
@OneToMany(mappedBy = "user")
private Collection<Setting> settings = new HashSet<>();
// getters and setters
}
@Entity
public class Setting {
@Id
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "userid")
private User user;
private String key;
private String value;
// getters and setters
}
public interface UserRepository extends JpaRepository<User, Long>, QuerydslPredicateExecutor<User> {
}
I want to have a result returned sorted by the value of one setting. Is it possible to order by user.settings.value where settings.name = 'SampleName' using Spring Data JPA with QueryDSL?