Код: Выделить всё
org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [67279329-5096-4196-9E73-748B33122CE2] did not match expected type [java.util.UUID (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [67279329-5096-4196-9E73-748B33122CE2] did not match expected type [java.util.UUID (n/a)]
- добавление @Column(name = "id", updatable = false, nullable = false) в поле сущности
- добавление @Type(type="org) .hibernate.type.UUIDCharType") для объекта поле
- добавление @Type(type="uuid-char") в поле сущности
Код: Выделить всё
@Entity
//lombok stuff
public class Foo {
@Id
private UUID id;
private String name;
//...
}
Код: Выделить всё
CREATE TABLE foo
(
id UUID NOT NULL PRIMARY KEY,
name VARCHAR NOT NULL,
...
);
Код: Выделить всё
@GetMapping(value = "/foo")
public ResponseEntity findFoos(@RequestParam Map filterArguments) {
FooFilter filter = filterMapper.map(filterArguments);
FooSpecification spec = new FooSpecification(filter);
List foos = fooRepo.findAll(spec);
//...
}
Код: Выделить всё
public class FooSpecification extends SpecificationHelper implements Specification {
private final FooFilter filter;
public FooSpecification(FooFilter filter) {
this.filter = filter;
}
@Override
public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) {
Predicate predicate = null;
predicate = createIdPredicate(root, filter, criteriaBuilder, predicate);
predicate = createNamePredicate(root, filter, criteriaBuilder, predicate);
// ...
return predicate;
}
private Predicate createIdPredicate(Root foo, FooFilter filter, CriteriaBuilder cb, Predicate predicate) {
Predicate returnPredicate = predicate;
if (StringUtils.isNotBlank(filter.getId()))
returnPredicate = addAndPredicate(cb, predicate, cb.like(cb.upper(foo.get("id")), "%" + filter.getId().toUpperCase() + "%"));
return returnPredicate;
}
private Predicate createNamePredicate(Root foo, FooFilter filter, CriteriaBuilder cb, Predicate predicate) {
Predicate returnPredicate = predicate;
if (StringUtils.isNotBlank(filter.getName()))
returnPredicate = addAndPredicate(cb, predicate, cb.like(cb.upper(foo.get("name")), "%" + filter.getName().toUpperCase() + "%"));
return returnPredicate;
}
}
Код: Выделить всё
addAndPredicate
Код: Выделить всё
FooFilter
Подробнее здесь: https://stackoverflow.com/questions/606 ... h-expected