如何在JPQL语句中使用typcasting?

Sha*_*zeb 6 java jpa openjpa websphere-7

Integer在数据库中有两列(derby和db2).我需要在里面把它们分开JPQL.

Integer如果余数是十进制数,则两个类型都返回零,例如0.25变为0等等,因为类型是int,因此可以理解.

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

Old*_*Pro 6

除法运算符对整数参数执行整数除法是一个特征.在MySQL中,您必须明确选择div整数除法和/浮点除法,而在JPQL中,选择是自动进行的,就像在Java中一样.

所以我建议:

select (column1 * 1.0) / column2 from Sometable;
Run Code Online (Sandbox Code Playgroud)


Jav*_*aby 5

您基本上有三个选择。

  1. 使用postload并让Java完成。
  2. 使用第三个类并在JPQL的Select语句中使用New Operator调用构造函数,在该调用内部您可以管理将传递给SQL的数据类型,但是您将获得不止一种对象,这很好,只需获得正确的对象即可从这一权利阵列index.More 这里
  3. 第三次使用本机查询,例如Idanmo所说的。