Ser*_*kin 7 criteriaquery jpa-2.0
考虑以下:
@Entity
public class Book
{
private List<String> authors;
@ElementCollection
public List<String> getAuthors() {
return authors;
}
public void setAuthors(List<String> authors) {
this.authors = authors;
}
}
Run Code Online (Sandbox Code Playgroud)
如何输入JPA2 CriteriaQuery表达式,比方说,让我找到所有超过2位作者的书籍?
JB *_*zet 18
在JPQL中:
select b from Book where size(b.authors) >= 2
Run Code Online (Sandbox Code Playgroud)
使用条件API(但为什么要用下面的混乱替换这样一个简单的静态查询?):
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Book> criteriaQuery = cb.createQuery(Book.class);
Root<Book> book = criteriaQuery.from(Book.class);
Predicate predicate = cb.ge(cb.size(book.get(Book_.authors)), 2);
criteriaQuery.where(predicate);
criteriaQuery.select(book);
Run Code Online (Sandbox Code Playgroud)