JPA / Hibernate比较浮点数失败,带小数点

时间:2016-03-24 17:28:38

标签: hibernate jpa

使用JPA / Hibernate查询表。我需要检索浮点列中值为“2.1”的所有行。

Java模型

@Column(name = "MANAGEMENT_API_VERSION")
private Float managementAPIVersion;

SQL

create table supported_api_versions (
    device_id int8 not null,
    management_api_version float4
);

我正在使用JPA / Hibernate CriteriaBuilder在加入另一个表时添加查询条件

Expression<Float> managementAPIVersion = deviceSupportApiVersionJoin.<Float>get("managementAPIVersion");

Expression<Float> mgmtApiVer = cb.literal(Float.valueOf(mgmtApiVersion));
conditions.add(cb.equal(managementAPIVersion, mgmtApiVer));

当mgmtApiVersion具有类似于2的值但当值具有像2.1这样的小数点时不起作用 根本原因似乎是生成的sql在浮动小数点值

附近没有引号
from devices device0_ inner join supported_api_versions supporteda1_ on device0_.id=supporteda1_.device_id where supporteda1_.management_api_version=2.1

对带有大约2.1的引号的sql的查询返回匹配,而没有引号的sql则不返回任何匹配。

我必须在CriteriaBuilder查询或映射中更改以强制Hibernate以正确的方式查询浮点数。

0 个答案:

没有答案