我有课 BookSpecBuider
从dto创建jpa规范。
bookspecbuider类:
public class BookSpecBuilder {
public Specification<Book> getSpec(BookSearchDto bookSearchDto) {
return (root, query, builder) -> {
List<Predicate> predicates = new ArrayList<>();
if (bookSearchDto.getGenre() != null) {
predicates.add(root.get("genre").in(bookSearchDto.getGenre()));
}
// another conditions
genre是enum类,所以在我的booksearchdto中,genre是string,并且Map有问题。
我在if块中更改它:
predicates.add(root.get("genre").in(Genre.valueOf(bookSearchDto.getGenre())));
但现在我有一个例外的问题,如果我得到类型的字符串,我的枚举没有。避免这个问题的最佳方法是什么?
1条答案
按热度按时间vlurs2pr1#
我建议创建另一个名为
Unknown
(或任何名称)并创建新的静态方法调用.of()
(或任何你喜欢的名字)在你的流派枚举中,这样就可以避免不必要的例外。