我有一个 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
谁能发现它为什么不起作用?