JPA @OrderBy 在@ElementCollection 中不起作用
JPA @OrderBy don't work in @ElementCollection
大家好。
A 有一个简单的实体,里面有 @ElementCollection of 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 请求 DB 期间实现。 (此外,在官方文档中有与 Set 类似的示例)
提前谢谢你。
关于这个主题的答案,请参考@Neil Stockton 的评论。
此外,不要忘记使用 @Sort 注释标记您的集合,因为在工作期间休眠会将集合转换为自己的类型(PersistentSet,或者对于 @Sort 标记 - SortedPersistentSet)。
大家好。
A 有一个简单的实体,里面有 @ElementCollection of 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 请求 DB 期间实现。 (此外,在官方文档中有与 Set 类似的示例)
提前谢谢你。
关于这个主题的答案,请参考@Neil Stockton 的评论。 此外,不要忘记使用 @Sort 注释标记您的集合,因为在工作期间休眠会将集合转换为自己的类型(PersistentSet,或者对于 @Sort 标记 - SortedPersistentSet)。