在this stackoverflow question中,海报暗示您可以将zeroDateTimeBehavior="convertToNull"
设置为<Resource>
标记上的属性。
有谁知道这是否应该可行?我看过的所有文档都说你只能在数据库连接URL上添加这个属性。
我实际上是在寻找一种方法在Spring上下文中设置DataSource上的这个属性,这样我们就不必去处理并更新我们所有的各种环境,或者冒失去财产的风险,如果有人需要更改连接网址。
Spring配置的DataSource非常简单:
<bean id="propsDataSource" class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
<property name="url" value="${connection.url}"/>
<property name="user" value="${connection.username}"/>
<property name="password" value="${connection.password}"/>
<property name="zeroDateTimeBehavior" value="convertToNull"/>
</bean>
有没有人知道如何通过JNDI配置的DataSource做到这一点?
谢谢,
答案 0 :(得分:1)
你好,JoseK的答案相同
但是我必须这样写:
<Resource
name="jdbc/TamaJNDI"
auth="Container"
driverClassName="com.mysql.jdbc.Driver"
maxActive="15"
maxIdle="3"
name="jdbc/TamaJNDI"
password="*******"
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/OBRAS_CONTROL?zeroDateTimeBehavior=convertToNull"
username="TAMAWEB"/>
在我的Tomcat context.xml文件中。
答案 1 :(得分:1)
万一有人需要这个,因为他们使用
spring.cloud.gcp.sql.instance-connection-name=someProject:someRegion:someInstance
并且没有可以将 zeroDateTimeBehavior
贴在上面的 URL,请使用:
spring.cloud.gcp.sql.instance-connection-name=someProject:someRegion:someInstance&zeroDateTimeBehavior=convertToNull
这是可行的,因为在内部该参数被附加到
jdbc:mysql://google/somaDatabase?socketFactory=com.google.cloud.sql.mysql.SocketFactory&cloudSqlInstance=
因此想要的结果:
jdbc:mysql://google/somaDatabase?socketFactory=com.google.cloud.sql.mysql.SocketFactory&cloudSqlInstance=someProject:someRegion:someInstance&zeroDateTimeBehavior=convertToNull
答案 2 :(得分:0)
http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html处的文档声明应该在网址上传递。
你能试试这个吗?
<ResourceParams name="jdbc/DataSourceName">
<parameter>
<name>zeroDateTimeBehavior</name>
<value>convertToNull</value>
</parameter>
</ResourceParams>