我的repository方法:
public List<PublicAnnouncementListItem> getAllPublicAnnouncementListItems(String Country, String City, String DateRange, String UID) {
String from = DateRange.split("-")[0];
String to = DateRange.split("-")[1];
return jdbcTemplate.query(
"SELECT `AnnouncementID`, `AnimalName`, `Species`, `Breed`, `DateRange`, `AnimalImage`, `Country`, `City` FROM `announcement` JOIN `user` ON `announcement`.`OwnerID`=`user`.`UID` WHERE `OwnerID` = `AssignedKeeperID` AND `user`.`UID` = `announcement`.`OwnerID` and `Country`=? and `City`=? and OwnerID!=? and STR_TO_DATE(SUBSTRING_INDEX(`DateRange`, '-', 1), '%d.%m.%Y') BETWEEN STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(SUBSTRING_INDEX(`DateRange`, '-', -1), '%d.%m.%Y') BETWEEN STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(?, '%d.%m.%Y');",
BeanPropertyRowMapper.newInstance(PublicAnnouncementListItem.class),
Country,
City,
UID,
from,
to,
from,
to
);
}
字符串
我的控制器方法:
@GetMapping("/api/getAllPublicAnnouncementListItems/{Country}/{City}/{DateRange}/{UID}")
public List<PublicAnnouncementListItem> getAllPublicAnnouncementListItems(@PathVariable("Country") String Country, @PathVariable("City") String City, @PathVariable("DateRange") String DateRange, @PathVariable("UID") String UID) {
return announcementsRepository.getAllPublicAnnouncementListItems(Country, City, DateRange, UID);
}
型
sql查询更可读:
SELECT
`AnnouncementID`,
`AnimalName`,
`Species`,
`Breed`,
`DateRange`,
`AnimalImage`,
`Country`,
`City`
FROM
`announcement`
JOIN `user` ON `announcement`.`OwnerID`=`user`.`UID`
WHERE
`OwnerID` = `AssignedKeeperID` AND
`user`.`UID` = `announcement`.`OwnerID`
and `Country`=? and `City`=? and OwnerID!=?
and STR_TO_DATE(SUBSTRING_INDEX(`DateRange`, '-', 1), '%d.%m.%Y') BETWEEN STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(?, '%d.%m.%Y')
AND STR_TO_DATE(SUBSTRING_INDEX(`DateRange`, '-', -1), '%d.%m.%Y') BETWEEN STR_TO_DATE(?, '%d.%m.%Y') AND STR_TO_DATE(?, '%d.%m.%Y');
型
查询用于获取基于指定日期范围的记录
告诉我我的代码可能有什么问题。当我在本地计算机上运行我的应用程序时,它可以工作但如果我将Sping Boot 应用程序部署到Google Cloud,我会得到一个错误:java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'and STR_TO_DATE(SUBSTRING_INDEX(
DateRange, '-', 1), '%d.%m.%Y') BETWEEN STR...' at line 1
。有趣的是当我尝试在PHP中执行查询时,我的管理员-我的意思是在连接到Sping Boot 应用程序的数据库中-一切正常,查询不会返回任何错误。
1条答案
按热度按时间deikduxw1#
当我在googlecloud上部署应用程序时,我没有注意到我选择了错误的项目adam314pi@cloudshell:~/quickadoptionapiserver(wrong_project)$。这就是为什么我一直在更新错误的项目,当我将项目更改为正确的项目时,一切都开始工作了