JPA @OrderBy不适用于@ElementCollection

时间:2017-08-30 08:22:07

标签: java jpa sql-order-by

美好的一天。

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”) - 为什么&gt;?它必须在对DB的SQL请求期间实现。 (此外,官方文档中有与Set相似的例子)

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

有关此主题的答案,请参阅@Neil Stockton的评论。 另外,不要忘记使用@Sort注释来标记您的集合,因为在工作期间的hibernate会转换自己类型的集合(PersistentSet,或者@Sort标记 - SortedPersistentSet)。