JPA 将 BigDecimal 转换为字符串
Posted
技术标签:
【中文标题】JPA 将 BigDecimal 转换为字符串【英文标题】:JPA Cast BigDecimal as string 【发布时间】:2022-01-23 20:44:13 【问题描述】:我正在使用 JPA 查询数据库,但发生了一些奇怪的事情。在某些情况下,演员表可以正常工作并编译,但使用 BigDecimal 它不允许我使用演员表来制作带有字符串的 LIKE。以下是部分有效的代码:
"AND cast(pe.pesoObjetivo as string) LIKE :pesoObjetivo% "
pesoObjetivo 是一种数据类型 Double
@Column(name = "peso_objetivo")
private Double pesoObjetivo;
但是当我尝试使用
执行查询时"AND cast(pe.pesoPregestacional) LIKE :pesoPregestacional% " +
pesoPregestacional 是一个 BigDecimal
@Column(name = "peso_pregestacional", precision = 21, scale = 2)
private BigDecimal pesoPregestacional;
我收到以下错误
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ) near line 1, column 701
以及我的其余查询 在 JPA 中,我如何使用字符串对 BigDecimal 数据进行 LIKE 操作?或者我的错误是什么? 通过注释掉这行代码或使用
"AND pe.pesoPregestacional = :pesoPregestacional% " +
一切正常,只是不是我想要的。很明显,错误就在这句话中
【问题讨论】:
喜欢数字数据类型总是感觉有点奇怪。你为什么要这么做? 为了从FrontEnd做一个过滤器,如果你传入一个空字符串,它不会被考虑,但是如果你写一个值,它会在表中寻找它对应的值具有相同的数据类型。 【参考方案1】:你错过了字符串:
错误
"AND cast(pe.pesoPregestacional) LIKE :pesoPregestacional% " +
正确
"AND cast(pe.pesoPregestacional as string) LIKE :pesoPregestacional% " +
【讨论】:
你说得对,我没有意识到我错过了那句话。非常感谢!以上是关于JPA 将 BigDecimal 转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
将特定于语言环境的字符串转换为 BigDecimal 的最佳方法
如何将“24cd2ec2-6674-4aa2-a761-1b0a953124ba”(字符串对象)转换为 BigDecimal [关闭]