1


我正在用@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());
4

3 回答 3

0

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

于 2012-05-22T15:58:18.020 回答
0

最新版本的 EclipseLink 允许在基本 ElementCollections 上使用 @OrderBy("desc") 和 @OrderBy("asc")。以前这会被忽略。

尝试最新版本。

于 2012-05-22T15:47:59.617 回答
0

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

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

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

于 2012-05-22T19:38:47.117 回答