首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改序列H2DB的数据类型

更改序列H2DB的数据类型
EN

Stack Overflow用户
提问于 2015-05-21 11:44:37
回答 2查看 1.4K关注 0票数 8

我需要更改存储在H2DB中的序列的返回值,当我通过一个直接SQL查询H2调用nextVal时,返回一个BigInt,而我需要一个BigDecimal。

我不能转换或转换这个值,我需要H2返回一个BigDecimal。

我怎么能这么做?

编辑:我无法更改Java代码,因为我正在测试,所以不能选择从DB强制转换或转换请求值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-21 08:09:37

如果允许您替换H2 jar文件,您可以创建自己的修补版本的H2。

org.h2.expression.Function变化中

代码语言:javascript
复制
    addFunctionNotDeterministic("NEXTVAL", NEXTVAL,
            VAR_ARGS, Value.LONG); 

代码语言:javascript
复制
    addFunctionNotDeterministic("NEXTVAL", NEXTVAL,
            VAR_ARGS, Value.DECIMAL);

org.h2.expression.SequenceValue的变化中

代码语言:javascript
复制
@Override
public Value getValue(Session session) {
    long value = sequence.getNext(session);
    session.setLastIdentity(ValueLong.get(value));
    return ValueLong.get(value);
}

@Override
public int getType() {
    return Value.LONG;
} 

代码语言:javascript
复制
@Override
public Value getValue(Session session) {
    long lv = sequence.getNext(session);
    ValueDecimal value = ValueDecimal.get(BigDecimal.valueOf(lv)); 
    session.setLastIdentity(value);
    return value;
}

@Override
public int getType() {
    return Value.DECIMAL;
} 
票数 5
EN

Stack Overflow用户

发布于 2019-08-26 09:03:25

我尝试从wero的答案中提取代码,并将其转化为H2本身的一个特性。

这个GitHub叉:当在H2中使用'MODE=Oracle‘时,https://github.com/portofrotterdam/h2database返回BigDecimals而不是BigInteger/longs,这使得它更符合甲骨文的数据库。

我已经请求拉到主程序,所以这种行为可能在h2database中是可用的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30372769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档