1

我有以下实体:

@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;

    ...
}

我的Respositoryimplements 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在 term 之后进行过滤NullpointerException。这甚至可能Predicate吗?

4

1 回答 1

2

我希望这会奏效:

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

更多示例...

于 2018-02-02T15:43:29.857 回答