更改序列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