Как запросить сущности по их значениям коллекции строк LIKE

У меня есть следующая сущность:

@Entity
public class SystemLogEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private long creationTime;
    private String thread;
    private int severity;
    @Lob
    private String message;
    @ElementCollection(fetch = FetchType.EAGER)
    @Lob
    private List<String> stacktrace;

    ...
}

мой Respository инвентарь JpaSpecificationExecutor, что позволяет мне использовать Specifications для фильтрации моих запросов в БД:

@Repository
public interface SystemLogRepository extends JpaRepository<SystemLogEntity, Long>, JpaSpecificationExecutor<SystemLogEntity> {

     public List<SystemLogEntity> findAll(Specification spec);
}

Для простого поля SystemLogEntity это отлично работает, Predicate прямо вперед.

Также, если я отфильтрую для точного элемента в коллекции, Predicate все еще прямо вперед (in).

Но как я могу отфильтровать SystemLogEntity после элемента коллекции трассировки стека, который LIKE данное значение?

Другими словами, я хотел бы, например, фильтровать SystemLogEntity после срока NullpointerException, Это возможно даже с Predicate?

1 ответ

Решение

Я надеюсь, что это будет работать:

Specification<SystemLogEntity> stacktraceLike(String stacktrace) {
    return (root, query, cb) -> cb.like(root.join("stacktrace"), "%" + stacktrace + "%");
}

Больше примеров...

Другие вопросы по тегам