已与目标VM断开连接,地址:“javadeBug”,传输:“共享内存”
进程已完成,退出代码为0
PessoAcontroller:
@RestController
@RequiredArgsConstructor
@RequestMapping("/pessoa")
public class PessoaController implements ListagemController<PessoaDto> {
@Autowired
private RepositorioPessoa repositorioPessoa;
@Override
public List<PessoaDto> listarSelects(String filtro) {
return repositorioPessoa.listarPessoas(filtro);
}
}
@Repository
public interface RepositorioPessoa extends RepositorioBase<Pessoa>, CustomRepositorioPessoa {
}
public interface CustomRepositorioPessoa {
List<PessoaDto> listarPessoas(String filtro);
}
@Repository
public class RespositorioPessoaImpl implements CustomRepositorioPessoa {
@PersistenceContext
private EntityManager entityManager;
@Override
public List<PessoaDto> listarPessoas(String filtro) {
var builder = this.entityManager.getCriteriaBuilder();
var criteria = builder.createQuery(PessoaDto.class);
var root = criteria.from(Pessoa.class);
var selection = builder.construct(PessoaDto.class,
root.get("id"),
root.get("nome"),
root.get("matricula"));
criteria.select(selection);
Specification specs = (root1, criteriaQuery, criteriaBuilder) -> {
List<Predicate> filtros = new ArrayList<>();
if(filtro != null && !filtro.isEmpty()) {
criteriaBuilder.or(
criteriaBuilder.like(root1.get("nome"), "%" + filtro + "%"),
criteriaBuilder.like(root1.get("matricula"), "%" + filtro + "%")
);
}
return criteriaBuilder.and(filtros.toArray(new Predicate[0]));
};
criteria.where(specs.toPredicate(root, criteria, builder));
TypedQuery<PessoaDto> query = this.entityManager.createQuery(criteria);
return query.getResultList();
}
}
您的自定义存储库名称必须为
CustomRepositorioPessoaImpl
这是Spring数据所要求的。
这是interace名称和后缀Impl