0
おはようございます。JPA @OrderByは@ElementCollectionで動作しません
Aには@ElementCollectionがセットされた単純なエンティティがあります。 DBテーブルのスキーム - それゆえ: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")を作業しないでください - なぜ>?それはDBへのSQL要求中に実装する必要があります。 (公式ドキュメントにもSetと同様の例があります)
ありがとうございます。
「OrderBy」は、要素のフィールドによって要素を順序付けすることです。最初に、Setから、そのSet以降の順序付けはなく、次に要素にはフィールドがありません! "Integer"は "ModelYear"フィールドを持っていますか?いいえ。 –
@Neil Stockton [OK]、// ElementCollectionの// OrderByは//埋め込み可能な型だけで動作するのでしょうか?そして、もし我々がワンドソートであれば、セットのTreeSet の実装を使用することは容認できますか?> –
Nolik
'OrderBy'は' ElementCollection'を使用するときに埋め込み可能であることにのみ注意してください。 TreeSetは、セットがインスタンス化されるときにJPAプロバイダがコンパレータの設定をサポートする限り、一方向です。 –