Java JPA标准构建器类似于双精度
我正试图从遗留数据库中检索数据 表中的列定义为包含帐号的十进制(13,0) 无法更改列数据类型,因为它将对旧系统产生重大影响。基本上,所有使用该表的程序都需要更改,然后重新编译,这不是一个选项 我们要求查找帐号包含值的所有记录,例如,用户可以搜索12345,所有帐号包含12345的帐户都应返回 如果这是CHAR/VARCHAR,我会使用:Java JPA标准构建器类似于双精度,java,jpa,spring-data-jpa,jpa-criteria,Java,Jpa,Spring Data Jpa,Jpa Criteria,我正试图从遗留数据库中检索数据 表中的列定义为包含帐号的十进制(13,0) 无法更改列数据类型,因为它将对旧系统产生重大影响。基本上,所有使用该表的程序都需要更改,然后重新编译,这不是一个选项 我们要求查找帐号包含值的所有记录,例如,用户可以搜索12345,所有帐号包含12345的帐户都应返回 如果这是CHAR/VARCHAR,我会使用: criteriaBuilder.like(root.<String>get(Record_.accountNumber), searchTerm)
criteriaBuilder.like(root.<String>get(Record_.accountNumber), searchTerm)
我还没有真正尝试过这个,但我相信它应该会起作用
criteriaBuilder.like(
root.get(Record_.accountNumber).as(String.class),
searchTerm)
这将生成类似以下类型的查询:
SELECT * FROM ACCOUNTS WHERE CAST(accountNumber AS text) LIKE '%12345%'
也许见“谢谢你”恐怖蝙蝠。将尝试一下。谢谢@coladict,但criteriaBuilder.toString()需要表达式
SELECT * FROM ACCOUNTS WHERE CAST(accountNumber AS text) LIKE '%12345%'