0
美好的一天。JPA @OrderBy不在@ElementCollection中工作
A有一個簡單的實體,其中有@ElementCollection Set。 數據庫表的方案 - 因此:enter image description here
@Entity
@Table(name = "Dealer")
public class Dealer implements java.io.Serializable{
private int id;
private Set<Integer> modelYears = new LinkedHashSet<Integer>(0);
...
@Id
@GeneratedValue
@Column(name = "Id", unique = true, nullable = false)
@XmlTransient
public int getId() {
return this.id;
}
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "DealerModelYear", joinColumns = @JoinColumn(name = "DealerId"))
@Column(name = "ModelYear")
@OrderBy("ModelYear ASC")
@XmlElementWrapper
@XmlElement(name = "modelYear")
public Set<Integer> getModelYears() {
return this.modelYears;
}
public void setModelYears(Set<Integer> modelYears) {
this.modelYears = modelYears;
}
在這裏,不要工作@OrderBy( 「ModelYear ASC」) - 爲什麼?>它必須在對數據庫的SQL請求期間執行。 (另外在官方文檔中有與Set相似的例子)
提前致謝。
'OrderBy'是通過元素的字段排序元素。首先有一個Set,因爲它是一個Set,所以沒有這個順序,其次這個元素沒有字段! 「Integer」是否有「ModelYear」字段?不。 –
@Neil Stockton好吧,這是否意味着//OrderCha for // ElementCollection只適用於// Embeddable類型?如果我們是魔杖排序可以使用TreeSet實現Set ?> –
Nolik
只有使用'ElementCollection'時,'OrderBy'才具有可嵌入性,是的。 TreeSet是一種方法,只要您的JPA提供程序支持在實例化集合時設置比較器。 –