Vic*_*tor 7 hibernate bigdecimal long-integer
hibernate命名查询返回数据类型为NUMBER的列的BigDecimal.
select col1 as "col1" from table1 union select col2 as "col1" from table2
Run Code Online (Sandbox Code Playgroud)
在客户端,我希望col1的数据类型是long(原始)我这样做:
<return-scalar column="col1" type="java.lang.Long" />
Run Code Online (Sandbox Code Playgroud)
要么
<return-scalar column="col1" type="long" />
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,我得到:
java.lang.ClassCastException: java.math.BigDecimal incompatible with java.lang.Long
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?我怀疑,别名有什么问题?
我不知道您的休眠配置有什么问题,但是作为一种变通办法,一种使您不必关心Number休眠查询返回的Java 类型的技巧是将返回的值转换为Number并调用.longValue():
long id = ((Number) em.createNativeQuery("select my_seq.nextVal from dual")
.getSingleResult())
.longValue();
Run Code Online (Sandbox Code Playgroud)
如果查询返回你不关心这样的话Long,BigDecimal,BigInteger,Short只要它适合到Java long。
| 归档时间: |
|
| 查看次数: |
16242 次 |
| 最近记录: |