如何在一组简单对象上实现排序?

时间:2013-04-14 07:06:38

标签: java hibernate persistence

我正在尝试做这样的事情:

@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "UserStrings")
@Column(name = "string")
@OrderBy
private List<String> strings = new LinkedList<>();

这会产生一个表格:

UserStrings
-----------
User_object_id bigint(20) NOT NULL,
string DEFAULT NULL

这很好,但我把这个集合作为一个无序的org.hibernate.collection.internal.PersistentBag,每次我迭代它,我得到不同的顺序。我尝试使用@OrderBy,但它不能用于字符串的收集,我想如果它是实体的集合,那就是它。

我绝对相信我希望它保留一系列字符串,为它们创建一个新实体毫无意义。

我希望将字符串按其值排序,因此OrderColumn(我认为)也不是这样,因为它会为订购创建额外的列。

任何人都知道我可以做些什么来将它们放在像ArrayList或LinkedList这样的有序集合中?

2 个答案:

答案 0 :(得分:1)

很抱歉成为坏消息的承载者,但这似乎是known hibernate issue,尚未解决。

答案 1 :(得分:0)

This可能会有所帮助。

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="CUST_ID")
@Sort(type = SortType.COMPARATOR, comparator = TicketComparator.class)
public SortedSet<Ticket> getTickets() {
    return tickets;
}