在Set的元素上写一个条件查询

时间:2016-12-31 17:22:10

标签: java hibernate specifications criteriaquery

如果参数是Set,我如何编写条件查询? 在类Libro autore是一个Set,在我的标准查询中我想检查作者的名字和作者的姓氏。 如果我认为这种方法肯定不起作用,因为autores是一个Set而authorFirstName是一个String。

public static Specification<Libro> filterByAuthorFirstName(final String authorFirstName){
    return new Specification<Libro>() {
        @Override
        public Predicate toPredicate(Root<Libro> root, CriteriaQuery<?> query, CriteriaBuilder cb){
            return cb.equal((root.get(Libro_.autores)), authorFirstName);
        }
    };
}

生成的Libro_类是

    package com.dennis.casalibro.domain;

import javax.annotation.Generated;
import javax.persistence.metamodel.SetAttribute;
import javax.persistence.metamodel.SingularAttribute;
import javax.persistence.metamodel.StaticMetamodel;

@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor")
@StaticMetamodel(Libro.class)
public abstract class Libro_ {

    public static volatile SingularAttribute<Libro, String> descrizione;
    public static volatile SingularAttribute<Libro, String> titolo;
    public static volatile SingularAttribute<Libro, Integer> numero_pagine;
    public static volatile SingularAttribute<Libro, CasaEditrice> casaEditrice;
    public static volatile SingularAttribute<Libro, Integer> anno_pubblicazione;
    public static volatile SingularAttribute<Libro, Integer> rating;
    public static volatile SingularAttribute<Libro, String> copertina_url;
    public static volatile SingularAttribute<Libro, Long> id;
    public static volatile SetAttribute<Libro, Autore> autores;
    public static volatile SingularAttribute<Libro, Genere> genere;

}

0 个答案:

没有答案