如何返回JPA中最大的Collection的大小?

时间:2014-08-30 10:05:06

标签: java jpa jpql entitymanager

这是我的代码:

@Entity
@Table("Books")
public class BookImp implements Book {

@Id
@GeneratedValue
@Column(name = "id")
private Long id;

@ElementCollection
private Set<String> authors = new HashSet<String>();

// getters + constructors

}

我想创建一个SQL查询,它将返回最大作者集合的大小。我怎么能这样做?

编辑:对于那些建议使用for循环的人,我希望答案看起来像这样:

@Override
public int getLargestAuthors() {
return entityManager.createQuery("select b.authors from BookImpl b where b.authors.size ...").getSingleResult().size();
}

2 个答案:

答案 0 :(得分:3)

不是mysql向导,但你不能这样做吗?

select MAX(b.authors.size) from BookImpl b

答案 1 :(得分:2)

SELECT m FROM BookImp m where size(m.authors) = (select max(size(c.authors)) FROM BookImp c)

这将返回一个或多个具有最大尺寸的BookImp。