JPA CriteriaBuilder 喜欢双重
JPA CriteriaBuilder like on double
我正在尝试从遗留数据库中检索数据。
table 中的列定义为包含帐号的 DECIMAL(13,0)。
不能更改列数据类型,因为它会对遗留系统产生重大影响。基本上所有使用 table 的程序都需要更改然后重新编译,这不是一个选项。
我们有一个需求,要查找所有账号包含值的记录,例如用户可以搜索12345,应该返回所有账号包含12345的账号。
如果这是 CHAR/VARCHAR,我会使用:
criteriaBuilder.like(root.<String>get(Record_.accountNumber), searchTerm)
由于列定义为 DECIMAL(13,0),accountNumber 属性 是双精度的。
有没有办法在 DECIMAL/double 字段上执行点赞?
SQL 将是
SELECT * FROM ACCOUNTS WHERE accountNumber LIKE '%12345%'
我还没有真正尝试过,但我相信它应该有效
criteriaBuilder.like(
root.get(Record_.accountNumber).as(String.class),
searchTerm)
这应该生成类似这样的查询:
SELECT * FROM ACCOUNTS WHERE CAST(accountNumber AS text) LIKE '%12345%'
我正在尝试从遗留数据库中检索数据。
table 中的列定义为包含帐号的 DECIMAL(13,0)。
不能更改列数据类型,因为它会对遗留系统产生重大影响。基本上所有使用 table 的程序都需要更改然后重新编译,这不是一个选项。
我们有一个需求,要查找所有账号包含值的记录,例如用户可以搜索12345,应该返回所有账号包含12345的账号。
如果这是 CHAR/VARCHAR,我会使用:
criteriaBuilder.like(root.<String>get(Record_.accountNumber), searchTerm)
由于列定义为 DECIMAL(13,0),accountNumber 属性 是双精度的。
有没有办法在 DECIMAL/double 字段上执行点赞?
SQL 将是
SELECT * FROM ACCOUNTS WHERE accountNumber LIKE '%12345%'
我还没有真正尝试过,但我相信它应该有效
criteriaBuilder.like(
root.get(Record_.accountNumber).as(String.class),
searchTerm)
这应该生成类似这样的查询:
SELECT * FROM ACCOUNTS WHERE CAST(accountNumber AS text) LIKE '%12345%'