2013-04-14 33 views
1

我試圖做這樣的事情:如何在一組簡單對象上實現排序?

@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這樣的有序集合?

回答

1

對不起,壞消息的持有者,但這似乎是known hibernate issue,尚未解決。

+0

不好...「創建時間:02/Dec/11」。感謝您的信息。 –

+0

好消息,它剛剛解決 - [鏈接](https://hibernate.atlassian.net/browse/HHH-6875)。我會盡快檢查它。 –

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; 
} 
+0

這是怎麼回事? OP說:「我絕對相信我希望它保留一組字符串,爲它們創建一個新的實體沒有意義」 – radai