HikariCP 中 SQLite 的配置 date_string_format
Configuration date_string_format of SQLite in HikariCP
我们正在将 C3P0
迁移到 HikarCP
\o/,除了我们要覆盖的 属性 配置 date_string_format
之外,一切都很好。
这是我们旧的 C3P0 配置的一部分:
<bean id="defaultDataSource" destroy-method="close" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="org.sqlite.SQLiteDataSource" />
...
<property name="properties">
<map value-type="java.lang.String" key-type="java.lang.String">
<entry key="date_string_format" value="${datasource.date_string_format:''}" />
</map>
</property>
</bean>
还有一点我们的 HikariCP 配置:
<bean id="merlinDataSourceConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="dataSourceClassName" value="org.sqlite.SQLiteDataSource" />
...
<property name="registerMbeans" value="true"/>
<property name="dataSourceProperties">
<props>
<prop key="date_string_format">${datasource.date_string_format:''}</prop>
</props>
</property>
</bean>
我们收到此错误:
Method not found: setDate_string_format
java.beans.PropertyDescriptor.<init>(Unknown Source)
com.zaxxer.hikari.util.PropertyBeanSetter.setProperty(PropertyBeanSetter.java:125)
com.zaxxer.hikari.util.PropertyBeanSetter.setTargetFromProperties(PropertyBeanSetter.java:63)
com.zaxxer.hikari.pool.PoolUtilities.initializeDataSource(PoolUtilities.java:111)
com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:157)
com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60)
com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48)
com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
知道如何解决这个问题吗?
谢谢
不知道 C3P0 是如何工作的,但在 HikariCP 中 dataSourceProperties
将映射到针对 DataSource class 的方法调用。因此,像 date_string_format
这样的 属性 将映射到在名为 setDate_string_format()
的 SQLiteDataSource 上寻找 setter。没有这样的setter。沿着这些方向尝试:
<bean id="sqliteConfig" class="org.sqlite.SQLiteConfig">
<constructor-arg>
<props>
<prop key="date_string_format">${datasource.date_string_format:''}</prop>
</props>
<constructor-arg>
</bean>
<bean id="merlinDataSourceConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="dataSource">
<bean id="sqlLiteDataSource" class="org.sqlite.SQLiteDataSource">
<constructor-arg ref="sqliteConfig" />
</bean>
</property>
...
<property name="registerMbeans" value="true"/>
</bean>
您当然可以 nest/unnest 需要 <bean>
声明并且 add/remove refs
.
对于 SQLiteDataSource
(JavaDoc here) 上公开的任何 "setter",请随意继续使用 dataSourceProperties
。
我们正在将 C3P0
迁移到 HikarCP
\o/,除了我们要覆盖的 属性 配置 date_string_format
之外,一切都很好。
这是我们旧的 C3P0 配置的一部分:
<bean id="defaultDataSource" destroy-method="close" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="org.sqlite.SQLiteDataSource" />
...
<property name="properties">
<map value-type="java.lang.String" key-type="java.lang.String">
<entry key="date_string_format" value="${datasource.date_string_format:''}" />
</map>
</property>
</bean>
还有一点我们的 HikariCP 配置:
<bean id="merlinDataSourceConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="dataSourceClassName" value="org.sqlite.SQLiteDataSource" />
...
<property name="registerMbeans" value="true"/>
<property name="dataSourceProperties">
<props>
<prop key="date_string_format">${datasource.date_string_format:''}</prop>
</props>
</property>
</bean>
我们收到此错误:
Method not found: setDate_string_format
java.beans.PropertyDescriptor.<init>(Unknown Source)
com.zaxxer.hikari.util.PropertyBeanSetter.setProperty(PropertyBeanSetter.java:125)
com.zaxxer.hikari.util.PropertyBeanSetter.setTargetFromProperties(PropertyBeanSetter.java:63)
com.zaxxer.hikari.pool.PoolUtilities.initializeDataSource(PoolUtilities.java:111)
com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:157)
com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60)
com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48)
com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
知道如何解决这个问题吗?
谢谢
不知道 C3P0 是如何工作的,但在 HikariCP 中 dataSourceProperties
将映射到针对 DataSource class 的方法调用。因此,像 date_string_format
这样的 属性 将映射到在名为 setDate_string_format()
的 SQLiteDataSource 上寻找 setter。没有这样的setter。沿着这些方向尝试:
<bean id="sqliteConfig" class="org.sqlite.SQLiteConfig">
<constructor-arg>
<props>
<prop key="date_string_format">${datasource.date_string_format:''}</prop>
</props>
<constructor-arg>
</bean>
<bean id="merlinDataSourceConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="dataSource">
<bean id="sqlLiteDataSource" class="org.sqlite.SQLiteDataSource">
<constructor-arg ref="sqliteConfig" />
</bean>
</property>
...
<property name="registerMbeans" value="true"/>
</bean>
您当然可以 nest/unnest 需要 <bean>
声明并且 add/remove refs
.
对于 SQLiteDataSource
(JavaDoc here) 上公开的任何 "setter",请随意继续使用 dataSourceProperties
。