我想将任意字符与两个字符“”和“匹配。“在使用JPA和elasticsearch数据库的查询的参数中。
示例如下:
在我的数据库中,我有一个“code”字符串:“AA33BB”、“AA38BB”、“CG77FF”、“DV11PL”...
我希望收到参数为“AA”的前100个结果作为答案=>“AA 33 BB”,“AA 38 BB”。
而且还接收具有参数“AA 3?BB”还是“AA”?BB”(在任何地方)作为答案获得=>“AA 33 BB”,“AA 38 BB”。
我使用Java Spring-Boot 3和elasticsearch依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
字符串
/我的仓库:
@Repository
public interface CodeRepository extends ElasticsearchRepository<Code, Long> {
Iterable<Code> findFirst100CodeContaining(String code);
}
型
//我的服务:
@Service
public classServiceCode {
@Autowired
private CodeRepository codeRepository;
public Iterable<CodeDTO> searchCodes(CodeDTO CodeDTO) {
String code = codeDTO.getCode();
code = code.replace("?", ".");
code = code.replace("*", "");
Iterable<Code> codeList = codeRepository.findFirst100ByCodeContaining(code);
return mapToListOfDTO(codeList);
}
}
型
SQL版本查询:@Query(“SELECT c FROM codes c WHERE c.code LIKE:code”)
对“*”有效,对“无效?“.
你有一个想法的字符来取代或如何做,否则?
2条答案
按热度按时间vaj7vani1#
我已经通过以下代码更改了我的存储库:
字符串
和我的服务由这个代码:
型
我的模型是如何配置的:
型
但这也不管用...
fcwjkofz2#
我找到了答案,用这种方式传递参数就足够了:
字符串
成功了!