如何在不使用 URL 的情况下在 JNDI 数据源上设置 ZeroDateTimeBehavior?

发布于 2024-09-08 12:49:08 字数 875 浏览 4 评论 0原文

这个 stackoverflow 问题中,海报暗示您可以将 zeroDateTimeBehavior="convertToNull" 设置为 标记上的属性。

有谁知道这是否可能?我看过的所有文档都说您只能在数据库连接 URL 上添加此属性。

我实际上正在寻找一种在 Spring 上下文中在 DataSource 上设置此属性的方法,这样我们就不必四处走动并更新所有各种环境,或者在有人需要更改连接时冒着丢失属性的风险网址。

Spring 配置的数据源使它变得非常简单:

<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 配置的数据源来做到这一点?

谢谢,

In this stackoverflow question the poster implies that you can set zeroDateTimeBehavior="convertToNull" as an attribute on the <Resource> tag.

Does anyone know if this should be possible? All the docs I've looked at say that you can only add this property on the database connection url.

I'm actually looking for a way to set this property on the DataSource from within the Spring context, so that we don't have to go around and update all our various environments, or risk losing property this should someone need to change the connection url.

A Spring configured DataSource makes it very easy:

<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>

Does anyone know how to do this through a JNDI configured DataSource?

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

空‖城人不在 2024-09-15 12:49:08

您好,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 文件中。

Hello the same answer of JoseK

But i have to put it in this way:

<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"/>

In my Tomcat context.xml file.

注定孤独终老 2024-09-15 12:49:08

文档位于 http://dev .mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html 声明它应该在 URL 上传递。

你可以尝试一下这对你有用吗?

<ResourceParams name="jdbc/DataSourceName">
                    <parameter>
                         <name>zeroDateTimeBehavior</name>
                         <value>convertToNull</value>
                     </parameter>
</ResourceParams> 

The docs at http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-configuration-properties.html state it should be passed on the URL.

Can you try if this works for you?

<ResourceParams name="jdbc/DataSourceName">
                    <parameter>
                         <name>zeroDateTimeBehavior</name>
                         <value>convertToNull</value>
                     </parameter>
</ResourceParams> 
挽手叙旧 2024-09-15 12:49:08

如果有人需要这个,因为他们使用

spring.cloud.gcp.sql.instance-connection-name=someProject:someRegion:someInstance

但没有 URL 来调用 zeroDateTimeBehavior,请使用:

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

In case somebody needs this because they use

spring.cloud.gcp.sql.instance-connection-name=someProject:someRegion:someInstance

and have no URL to slap zeroDateTimeBehavior onto, use:

spring.cloud.gcp.sql.instance-connection-name=someProject:someRegion:someInstance&zeroDateTimeBehavior=convertToNull

This works because internally that parameter gets appended after

jdbc:mysql://google/somaDatabase?socketFactory=com.google.cloud.sql.mysql.SocketFactory&cloudSqlInstance=

hence the desired result:

jdbc:mysql://google/somaDatabase?socketFactory=com.google.cloud.sql.mysql.SocketFactory&cloudSqlInstance=someProject:someRegion:someInstance&zeroDateTimeBehavior=convertToNull
熟人话多 2024-09-15 12:49:08

在jndi资源内部使用

connectionProperties="zeroDateTimeBehavior=convertToNull"

Use inside jndi resource

connectionProperties="zeroDateTimeBehavior=convertToNull"

黯淡〆 2024-09-15 12:49:08
<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 
username="TAMAWEB"
connectionProperties="zeroDateTimeBehavior=convertToNull"/>
<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 
username="TAMAWEB"
connectionProperties="zeroDateTimeBehavior=convertToNull"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文