2014-08-30 1 views
3

Вот мой код:Как вернуть размер самой большой коллекции в JPA?

@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, который возвратит размер самой большой коллекции авторов. Как я могу это сделать?

EDIT: Для тех, кто предложил использовать для цикла, это то, как я хочу, чтобы ответ выглядеть следующим образом:

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

ответ

3

не волшебник тузд, но вы не можете сделать это, как это?

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

Хотя вы не мастер mysql, ваше решение сработало! Спасибо! – Vladislav

2

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

Это возвращает один или более BookImp-х, которые имеют наибольший размер.