@OrderBy被hibernate&忽略了的EclipseLink?

时间:2012-05-21 13:35:51

标签: hibernate sorting sql-order-by eclipselink


我正在使用@ElementCollection测试@OrderBy并且它似乎不起作用。 我检索拥有元素集合的实体并打印集合,它不会对任何内容进行排序..

@Entity
public class AtAsOverride

@ElementCollection(fetch = FetchType.LAZY)
@Column(name = "Strings")
@OrderBy(value="stringuri desc") // tried everything: without any value, strings, stringuri ..
private List<String> stringuri;

Query qq = em.createQuery("Select a from AtAsOverride a");
System.out.println(AtAsOverride.class.cast(qq.getResultList().get(0)).getStringuri());

3 个答案:

答案 0 :(得分:0)

EclipseLink的最新版本允许@OrderBy(&#34; desc&#34;)和@OrderBy(&#34; asc&#34;)在基本ElementCollections上。 以前这会被忽略。

试试最新版本。

答案 1 :(得分:0)

只需使用@OrderBy(“desc”)或@OrderBy(“asc”),因为它是原始类型。它应该工作。

答案 2 :(得分:0)

根据JPA规范,@ OrderBy对基本类型的ElementCollection(你拥有的)不应该指定任何值。意思是,它应该只是:

@ElementCollection(fetch = FetchType.LAZY)
@Column(name = "Strings")
@OrderBy
private List<String> stringuri;

应该表明“按照基本对象的值排序”。这将在第11.1.38节中介绍