【发布时间】:2019-08-23 18:48:42
【问题描述】:
我有以下 SQL 语句,用于对我的 Spring Boot 后端进行非常复杂的搜索。不,我需要将此传输到 JQPL 以用于我的存储库中的搜索方法。
SELECT DISTINCT dav_n.*
FROM [DwhTest].[dbo].[DimensionAttributeValue] dav_n
INNER JOIN [DwhTest].[dbo].[DimensionAttributeValue] dav_l on dav_n.MasterData_ID = dav_l.MasterData_ID AND dav_l.DimensionAttribute_ID = $PARAM1 AND dav_l.LstValue = $PARAMA2
AND ((
SELECT TOP 1 StartDate FROM DimensionAttributeValue
WHERE MasterData_ID = dav_n.MasterData_ID AND DimensionAttribute_ID = dav_n.DimensionAttribute_ID AND StartDate <= getdate()
ORDER BY StartDate DESC
) = dav_n.StartDate OR dav_n.StartDate IS NULL)
WHERE dav_n.DimensionAttribute_ID = $PARAM3 AND dav_n.ChrValue LIKE '$PARAM4%'
$PARAM1 - $PARAM4 是我的搜索变量。以下清单是我的PagingAndSortingRepository的代码:
@Query(value = "SELECT DISTINCT dav_n FROM DimensionAttributeValue dav_n " +
"INNER JOIN DimensionAttributeValue dav_l on dav_n.MasterData_ID = dav_l.MasterData_ID AND dav_l.DimensionAttribute_ID = :lstAttributeId AND dav_l.LstValue = :lstValue " +
"AND ((SELECT TOP 1 StartDate FROM DimensionAttributeValue WHERE MasterData_ID = dav_n.MasterData_ID AND DimensionAttribute_ID = dav_n.DimensionAttribute_ID AND StartDate <= getdate() ORDER BY StartDate DESC) = dav_n.StartDate OR dav_n.StartDate IS NULL)" +
"WHERE dav_n.DimensionAttribute_ID = :chrValueAttributeId AND dav_n.ChrValue LIKE ':chrValue%'")
Page<DimensionAttributeValue> searchByCharValueAndFilter(
@Param(value = "chrValueAttributeId") Long chrValueAttributeId, @Param(value = "lstAttributeId") Long lstAttributeId,
@Param(value = "chrValue") String chrValue, @Param(value = "lstValue") Long lstValue, Pageable pageable);
AND (([..] 语句出现错误:'(', <expression>, FUNCTION or identifier expected, got '('
谁能帮我翻译一下这句话?谢谢!
【问题讨论】:
标签: java sql spring-boot jpa jpql