使用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以正确的方式查询浮点数。