2012-07-12 70 views
0

我有一個實體內的SortedSet。但是,當我嘗試獲取它不排序。我試圖使用休眠或jpa,都不工作。任何原因? (我的設置實體實現可比太)休眠4不排序

private SortedSet<News> news = new TreeSet<News>(); 

    public void setNews(SortedSet<News> news) { 
    this.news = news; 
} 

    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE }) 
    @JoinTable(name = "NEWSGROUP_NEWS", joinColumns = @JoinColumn(name = "NEWSGROUP_ID"), inverseJoinColumns = @JoinColumn(name = "NEWS_ID")) 
    @OrderBy("title") 
    @Sort(type=SortType.COMPARATOR, comparator=NewsComparator.class) 
    public SortedSet<News> getNews() { 
     return this.news; 
    } 

public static class NewsComparator implements Comparator<News> 
    { 

     @Override 
     public int compare(News news1, News news2) { 
      return news1.getTitle().compareTo(news2.getTitle()); 

     } 

    } 

吾道

NewsGroup newsGroup = (NewsGroup)this.hibernateSessionFactory.getCurrentSession().get(NewsGroup.class, id); 

我還印製了SQL(與show_sql),但它不顯示在所有訂單。 請指教。 謝謝!

+0

請出示的消息字段的定義和setter方法 – gkamal 2012-07-12 17:53:06

+0

的SortedSet,與比較器進行排序,使用Java,在memory.It毫不奇怪你在生成的SQL中沒有看到任何'order by'。 – 2012-07-12 21:12:48

+0

嘗試刪除@Sort批註。 – JMelnik 2012-07-13 10:58:30

回答

0

JMelnik是正確的,通過移除@Sort,它的工作