提问人:osmarcf 提问时间:10/18/2023 最后编辑:osmarcf 更新时间:10/19/2023 访问量:32
仅更改 H2 兼容模式属性
Change H2 compatibility mode attribute only
问:
我在(默认)REGULAR 兼容模式下使用 H2,但为了使其与我同时使用的某些 DBMS 系统兼容,我只想设置属性(MODE 及其属性)。zeroExLiteralsAreBinaryStrings
有没有办法在不在连接字符串上设置 MODE 的情况下更改它?
我知道将MODE更改为MySQL会设置此属性,但就我而言,由于其他原因,它会影响其他地方和系统中断。
到目前为止,我尝试过:
将兼容模式设置为其他一些枚举; 其他枚举设置其他不需要的标志
让休眠对象达到该属性并相应地设置它; 我无法具体达到该属性
检查 H2 数据库以编程方式更改它; SETTINGS 表仅在 MODE 值上有所不同。没有存储值。
zeroExLiteralsAreBinaryStrings
创建一个新的模式/扩展模式; org.h2.engine.Mode 构造函数具有私有访问权限
答:
0赞
osmarcf
10/19/2023
#1
我设法使它工作,解开 Connection 对象并达到内部 H2 设置:
// I already had Connection connection
JdbcConnection h2Connection = connection.unwrap(JdbcConnection.class);
h2Connection.getSession().getDynamicSettings().mode.zeroExLiteralsAreBinaryStrings = false;
System.out.println(h2Connection.getSession().getDynamicSettings().mode.zeroExLiteralsAreBinaryStrings);
h2Connection.getSession().getDynamicSettings().mode.zeroExLiteralsAreBinaryStrings = true;
System.out.println(h2Connection.getSession().getDynamicSettings().mode.zeroExLiteralsAreBinaryStrings);
评论