我有两个Integer
数据库中的列(derby 和 db2)。我需要将它们彼此分开JPQL
.
两列都是类型Integer
如果余数是十进制数,则返回零,例如0.25
变成0
等等,这是可以理解的,因为类型是 int 。
In SQL
例如我可以有这个
select CAST(column1 as decimal(6,2))/CAST(column2 as decimal(6,2))from Sometable;
但什么是JPQL
相等的 。
一种选择可能是(我还没有尝试过)是有一个@Transient
返回 Decimal 类型的实体中的方法并在那里进行计算并将其传递给JPQL
但我宁愿让SQL
做这项工作。
Mysql 不需要在数据库级别进行转换。所以不同 RDBMS 的行为是不同的,这很好。但是 JPQL 应该做什么而不需要使用本机查询来知道此操作需要转换为十进制。
添加方言<property name="openjpa.jdbc.DBDictionary" value="derby"/>
也没有修复它。
请注意它是 JPA1
您基本上有三个选择。
- 使用 postload 并让 java 来完成。
- 使用第三个类并在 JPQL 的 Select 语句中使用 New Operator
调用构造函数并在调用内部您可以管理
将传递给 SQL 的数据类型,但您将获得不止一种数据类型
返回一种物体,这很好,只需从右侧获取正确的物体即可
数组索引。有关此的更多信息here http://openjpa.apache.org/builds/1.0.4/apache-openjpa-1.0.4/docs/manual/jpa_langref.html#jpa_langref_constructor.
- 第三,像 Idanmo 所说的那样使用 Native Query。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)