alb*_*ert 1 java jpa spring-data-jpa jpa-criteria
我正在尝试从遗留数据库中检索数据.
表中的列定义为包含帐号的DECIMAL(13,0).
无法更改列数据类型,因为它会对旧系统产生重大影响.基本上所有使用该表的程序都需要更改,然后重新编译,这不是一个选项.
我们要求查找帐号包含值的所有记录,例如,用户可以搜索12345,并且应返回帐号为12345的所有帐户.
如果这是CHAR/VARCHAR,我会使用:
criteriaBuilder.like(root.<String>get(Record_.accountNumber), searchTerm)
Run Code Online (Sandbox Code Playgroud)
作为定义为DECIMAL(13,0)的列的结果,accountNumber属性是double.
有没有办法在DECIMAL/double字段上执行类似的操作?
SQL会是
SELECT * FROM ACCOUNTS WHERE accountNumber LIKE '%12345%'
Run Code Online (Sandbox Code Playgroud)
我实际上没有试过这个,但我相信它应该有效
criteriaBuilder.like(
root.get(Record_.accountNumber).as(String.class),
searchTerm)
Run Code Online (Sandbox Code Playgroud)
这应该生成一个像这样的查询:
SELECT * FROM ACCOUNTS WHERE CAST(accountNumber AS text) LIKE '%12345%'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |