我尝试在带有规范的Spring Boot中实现搜索。最终它搜索了一些内容,但出现此错误:
java.lang.IllegalArgumentException: Parameter value [com.auth0.samples.bootfaces.TelefonbuchSpecifications$$Lambda$11/1542138726@62f6f6fb] did not match expected type [java.lang.String (n/a)]
我不知道。我认为我实施得正确,但是可以。我将向您显示必要的代码:
调用searchController:
if (!vorname.isEmpty()) {
eintraege = telefonbuchRepository.findByVorname(TelefonbuchSpecifications.hasVorname(vorname));
Telefonbuch存储库:
public interface TelefonbuchRepository extends JpaRepository, JpaSpecificationExecutor {
public List<Telefonbuch> findByVorname(Specification<Telefonbuch> spec);
规格:
public interface Specification {
Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb);
Telefonbuch规格:
public static Specification<Telefonbuch> hasVorname(String vorname) {
return (root, query, cb) -> {
return cb.equal(root.get(Telefonbuch_.vorname), "%"+vorname.toLowerCase()+"%");
};
}