Java 使用Spring数据规范,如何将两列的划分与一些输入值进行比较?

Java 使用Spring数据规范,如何将两列的划分与一些输入值进行比较?,java,spring,kotlin,spring-data,relational-database,Java,Spring,Kotlin,Spring Data,Relational Database,我在编写Spring数据规范时遇到了问题,该规范应该过滤掉DB搜索查询中的一些行 假设数据库中有一个表。此表包含两列,这两列都具有int类型。我需要一个Spring数据规范,它将按这两列的划分进行过滤。因此,如果这些列是A和B,那么A需要将A/B与一些已知的输入值进行比较 以下是我正在尝试做的(我正在使用Kotlin) return规范{root:root,uu:CriteriaQuery?,builder:CriteriaBuilder-> val结算:Join=root.Join(“结算”,

我在编写Spring数据规范时遇到了问题,该规范应该过滤掉DB搜索查询中的一些行

假设数据库中有一个表。此表包含两列,这两列都具有int类型。我需要一个Spring数据规范,它将按这两列的划分进行过滤。因此,如果这些列是A和B,那么A需要将A/B与一些已知的输入值进行比较

以下是我正在尝试做的(我正在使用Kotlin)

return规范{root:root,uu:CriteriaQuery?,builder:CriteriaBuilder->
val结算:Join=root.Join(“结算”,JoinType.INNER)
val decimalExpression=结算.get(“十进制”)
val multiplierExpression=结算.get(“乘数”)
val divisionExpression:Expression=builder.quot(十进制表达式,乘法器表达式)
建筑商和(
builder.isNotNull(十进制表达式),
builder.isNotNull(乘数表达式),
builder.greaterThanOrEqualTo(
表达,
一些已知的长期价值
))
}
所以,
结算
是我的表格。事实上,它的某种连接现在并不重要


decimal
multiplier
是我的A列和B列(我也不需要它们中的任何一个为空,否则我不能除法)。这看起来应该是可行的,但我遇到了一个问题,因为要比较的类型必须实现
Comparable
CriteriaBuilder
方法返回类型为
表达式。类别
编号
不可比较。看起来需要一些类强制转换?但是我不知道该怎么做,正确的方法是什么。

找到了一个很好的解决办法,你不需要除法,只需将方程的两部分相乘,这样你就不必处理“数字”类了

val multipliedExpression = builder.prod(settlement.get<Long>("multiplier"), someKnownLongValue)
builder.greaterThanOrEqualTo(
    settlement.get<Long>("decimal"),
    multipliedExpression
)
val multipledexpression=builder.prod(结算.get(“乘数”),someKnownLongValue)
builder.greaterThanOrEqualTo(
结算。获取(“十进制”),
多重压力
)
val multipliedExpression = builder.prod(settlement.get<Long>("multiplier"), someKnownLongValue)
builder.greaterThanOrEqualTo(
    settlement.get<Long>("decimal"),
    multipliedExpression
)