这是我的虚拟temp
表中的虚拟数据:
上面,columna
中没有数据,但这只是偶然的。我想获得
columna
columnb
值匹配输入参数值columnc
值为该列的最大数字等效值。 (columnc
的类型为character varying(255)
,但我知道该单元格中会有integer
个。所以我只想要那些列具有最大整数等值的行,即上述数据中的1)查询将如下所示:
SELECT * FROM temp
WHERE
columnb = 'ia'
AND coalesce(columna, '') = ''
AND CAST(coalesce(columnc, '0') AS integer)
=(
SELECT MAX(CAST(coalesce(columnc, '0') AS integer))
FROM temp
WHERE
columnb = 'ia'
AND coalesce(columna, '') = ''
);
输出如下:
Q1。是否可以通过基于Spring数据JPA方法名称的查询完成此操作? (主要是我看到这可能是不可能的,因为我遇到here)。说出这样的话:findByColumnbAndColumnaIsNullAnd<Something for filtering on max value of columnc>(String columnaValue)
?
Q2。如果columnc
是数字类型,是否可以执行Q1?
Q3。原生查询(带@Query
注释)是否是在spring-data jpa中执行此操作的唯一方法?
答案 0 :(得分:0)
The post you linked is 3 years old.
Q1: It's not. Your query is too complicated and MAX
/COALESCE
are not supported。您必须编写JPQL查询。
Q2:见Q1。
问题3:不,可以使用JPQL(@Query
native = false
)。
注意:另一种解决方案是执行视图(=本机查询)和@Immutable
实体。