更改序列H2DB的数据类型

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

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

我该怎么做?

编辑:我不能改变Java代码因为我测试所以转换或从数据库转换请求值不是一个选项。


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

org.h2.expression.Function改变

    addFunctionNotDeterministic("NEXTVAL", NEXTVAL,
            VAR_ARGS, Value.LONG); 

    addFunctionNotDeterministic("NEXTVAL", NEXTVAL,
            VAR_ARGS, Value.DECIMAL);

并在org.h2.expression.SequenceValue更改

@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;
} 

@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;
} 
链接地址: http://www.djcxy.com/p/26321.html

上一篇: Change datatype of a sequence H2DB

下一篇: How to install pip with Python 3?