为什么我的 JpaRepository (spring-data-jpa) 自定义查询 return 是一个空列表?
Why does my JpaRepository (spring-data-jpa) custom query return me an empty list?
我正在尝试开发一个网络应用程序,用户 post 他们的广告,我目前正在研究广告部分,它只是一个发送搜索模型的表单(它有一个字符串是写在搜索栏上的文本和一些不需要的过滤器)到后端(spring 引导),后端获取字符串并将其提供给 JpaRepository 方法,该方法应该对我的 oracle 数据库进行查询并提供我将结果集返回为 AdEntity 列表,唯一的问题是列表始终为空,这是方法:
@Query(value = "select distinct a.ann_id, a.nome, a.autore, a.descrizione, a.prodotto, a.prezzo "
+ "from annunci a, prodotti p "
+ "where a.prodotto = p.prod_id "
+ "and (a.nome like '%:main%' or p.nome like '%:main%')", nativeQuery = true)
public List<AnnuncioEntity> searchWithoutFilters(String main);
这就是我所说的:
@PostMapping("/")
public List<FullAnnuncio> searchAnnunci(@RequestBody SearchEntity search) {
List<AnnuncioEntity> li = annuncioDAO.searchWithoutFilters(search.getMain());
return null;
}
li 列表总是空的(用调试器检查),我不知道如何修复它,我确信查询有效并产生了预期的结果集,因为我首先在 sqlDeveloper 上尝试了它,但没有字符串我从搜索中得到的 isn't null
请帮忙我是新手,因为我什至不是初级程序员lmao
尝试将两次出现的查询“:main”更改为“?1”
完成,jpa 存储库上的 Like 子句有点像 dodoo,所以我不得不这样写:
LIKE CONCAT(CONCAT('%', :main), '%')
(语法只适用于 oracle 数据库,所以要小心,因为 mySql 和其他人这样写:
LIKE CONCAT('%', :param, '%')
感谢@Arnaud
我正在尝试开发一个网络应用程序,用户 post 他们的广告,我目前正在研究广告部分,它只是一个发送搜索模型的表单(它有一个字符串是写在搜索栏上的文本和一些不需要的过滤器)到后端(spring 引导),后端获取字符串并将其提供给 JpaRepository 方法,该方法应该对我的 oracle 数据库进行查询并提供我将结果集返回为 AdEntity 列表,唯一的问题是列表始终为空,这是方法:
@Query(value = "select distinct a.ann_id, a.nome, a.autore, a.descrizione, a.prodotto, a.prezzo "
+ "from annunci a, prodotti p "
+ "where a.prodotto = p.prod_id "
+ "and (a.nome like '%:main%' or p.nome like '%:main%')", nativeQuery = true)
public List<AnnuncioEntity> searchWithoutFilters(String main);
这就是我所说的:
@PostMapping("/")
public List<FullAnnuncio> searchAnnunci(@RequestBody SearchEntity search) {
List<AnnuncioEntity> li = annuncioDAO.searchWithoutFilters(search.getMain());
return null;
}
li 列表总是空的(用调试器检查),我不知道如何修复它,我确信查询有效并产生了预期的结果集,因为我首先在 sqlDeveloper 上尝试了它,但没有字符串我从搜索中得到的 isn't null
请帮忙我是新手,因为我什至不是初级程序员lmao
尝试将两次出现的查询“:main”更改为“?1”
完成,jpa 存储库上的 Like 子句有点像 dodoo,所以我不得不这样写:
LIKE CONCAT(CONCAT('%', :main), '%')
(语法只适用于 oracle 数据库,所以要小心,因为 mySql 和其他人这样写:
LIKE CONCAT('%', :param, '%')
感谢@Arnaud