この質問のようにマッピングした ManyToMany があります。
簡単にするためにボイラープレートを削除したことに注意してください
@Entity
class Person {
@OneToMany(mappedBy = "person")
@OrderBy("sort")
private List<PersonAddress> adresses = new ArrayList<>();
}
@Entity
class PersonAdress {
@EmbeddedId
private PersonAdressId id;
@Column
private int sort;
@ManyToOne
private Person person;
@ManyToOne
private Address address;
}
@Entity
class Address {
@OneToMany(mappedBy = "address")
@OrderBy("sort")
private List<PersonAddress> persons = new ArrayList<>();
}
@Embeddable
public class PersonAdressId implements Serializable {
@Column(name = "person_id")
private long personId;
@Column(name = "address_id")
private long addressId;
}
個人の住所をすべて取得し、並べ替え属性で並べ替えようとしています。しかし、何らかの理由で例外が発生するか、ソートされません。
私は次のことを試しました:
"select p from Person p where p.id=pid join fetch p.address a order by a.sort"
私も試しました:
Person person = entityManager.find(Person.class, personId);
person.getAddress() //<-- This should use the @OrderBy, but I don't get it ordered nor does it print out order by in the output
機能しない理由を誰でも見つけることができますか?