1
我有一個實體「郵報」與此屬性:JPQL SELECT ElementCollection
@ElementCollection
@CollectionTable(name ="tags")
private List<String> tags = new ArrayList<>();
然後我有一組由天然選擇查詢。現在的問題是如何選擇屬性標籤?
我的選擇查詢:
Query query = em.createQuery("SELECT p.id,MAX(p.createdAt),MAX(p.value) FROM Post p JOIN p.tags t WHERE t IN (?1,?2,?3) GROUP BY p.id ORDER BY COUNT(p) DESC");
/* ...
query.setFirstResult(startIndex);
query.setMaxResults(maxResults);
List<Object[]> results = query.getResultList();
List<Post> posts = new ArrayList<>();
for (Object[] result : results) {
Post newPost = new Post();
newPost.setId(((Number) result[0]).longValue());
newPost.setCreatedAt((Date) result[1]);
newPost.setValue((String) result[2]);
posts.add(newPost);
}
return posts;
如何選擇屬性標記?
謝謝,但現在我得到每個標籤相同的實體,因爲由t組。我想選擇t作爲列表。這可能嗎? –
perotom
事實上,在重讀你的查詢之後,我不明白你爲什麼要用p.createDate,p.value做一個MAX,而用p.id進行分組,這可能是一個主鍵=>刪除組,使用lazy(或eager)加載,例如:'for(Post post:results)post.getTags();' – NoDataFound
我剛剛解決了這個問題,因爲我現在只選擇了所有屬性的p。 – perotom