仅更改 H2 兼容模式属性

问题描述 投票:0回答:1

我在(默认)REGULAR 兼容模式下使用 H2,但为了使其与我同时使用的一些 DBMS 系统兼容,我想设置 ONLY 属性

zeroExLiteralsAreBinaryStrings
MODE 及其属性) .

有没有办法改变它而无需在连接字符串上设置模式?

我知道将 MODE 更改为 MySQL 会设置此属性,但就我而言,它会影响其他地方并由于其他原因导致系统崩溃。

到目前为止我尝试过的:

  • 将兼容性模式设置为其他一些枚举; 其他枚举设置其他不需要的标志

  • 让 hibernate 对象达到该属性并进行相应的设置; 我无法具体达到该属性

  • 检查H2数据库以编程方式更改它; 设置表仅在模式值上有所不同。没有

    zeroExLiteralsAreBinaryStrings

     存储值。

  • 创建新模式/扩展模式; org.h2.engine.Mode 构造函数具有私有访问权限

database h2 compatibility mode
1个回答
0
投票
我设法让它工作,展开 Connection 对象并达到内部 H2 设置:

JdbcConnection h2Connection = hikariProxyConnection.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);
    
© www.soinside.com 2019 - 2024. All rights reserved.