我正在使用 Micronaut Data 1.0.2 版。
给定以下 JPA 实体类:
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String code;
private String name;
private String fullName;
}
我可以使用以下方法创建全文搜索查询PageableRepository
:
@Repository
public interface ProductRepository extends PageableRepository<Product, Long> {
Slice<Product> findByCodeLikeOrNameLikeOrFullNameLike(
String code, String name, String fullName, Pageable pageable);
}
但是,我有一个问题要为该name
属性添加另一个标准。我想要实现的相当于下面的SQL:
select * from product
where code like '%search%'
or (name like '%search%' and name not like '%-%')
or full_name like '%search%'
我测试了以下方法:
Slice<Product> findByCodeLikeOrNameLikeAndNotLikeOrFullNameLike
Slice<Product> findByCodeLikeOrNameLikeAndNotContainsOrFullNameLike
Slice<Product> findByCodeLikeOrNameLikeAndNameNotLikeOrFullNameLike
Slice<Product> findByCodeLikeOrNameLikeAndNameNotContainsOrFullNameLike
知道如何使它起作用吗?
感谢先进。