gpt4 book ai didi

spring - Hibernate 3.6 动态方言解析器

转载 作者:行者123 更新时间:2023-12-05 07:38:24 25 4
gpt4 key购买 nike

我正在使用 Spring 4.3 和 Hibernate 3.6。我尝试指定一个自定义的 Hibernate 方言解析器,但它没有被使用。

我将日志语句放入我的自定义方言解析器中,但它们从未被打印出来。

我的具体问题是:

  1. 如何让 Hibernate 3.6 获取我的自定义方言解析器?

  2. 为什么一个特定的 hibernate 属性 (hibernate.dialect_resolvers) 被忽略了?正确的设置方法是什么?

这是我尝试过的事情的列表,但我目前没有想法。

  1. 我尝试在 session 工厂的 hibernate 属性上设置 dialect_resolvers 属性

    <property name="hibernateProperties">      <value>        hibernate.dialect_resolvers=mypackage.MyDialectResolver        ...      </value></property>
  2. 我尝试使用扩展 hibernate3 的 LocalSessionFactoryBean 的自定义 SessionFactory bean,并覆盖 postProcessConfiguration 方法来设置 Environment.DIALECT_RESOLVERS 属性。config.setProperty(Environment.DIALECT_RESOLVER, MyDialectResolver.class.getName());

    我在 session 工厂中设置的其他属性按预期工作,但在我尝试打印它们时也显示为空值。例如,我正在设置一个按预期工作的连接提供程序,但在通过 Environment.getProperties().getProperty(CONNECTION_PROVIDER) 访问时为空。config.setProperty(Environment.CONNECTION_PROVIDER, CustomConnectionProvider.class.getName());

    但是,当我稍后尝试打印方言解析器属性时(在应用程序代码内),它似乎没有被设置。log.info("方言解析器属性:"+ Environment.getProperties().getProperty(Environment.DIALECT_RESOLVERS));

    日志输出:“方言解析器属性:null”

  3. 我检查了 Hibernate 源代码,并尝试设置系统 (env) 属性,因为这些似乎在 Environment initialization 期间被读取。 .环境属性用于获取 DialectFactory 中的 DIALECT_RESOLVERS 设置.但这也不起作用。hibernate.dialect_resolvers=mypackage.MyDialectResolver;

最终编辑:我添加了一个 hibernate.properties,并在其中设置属性。成功了!hibernate.properties 文件必须位于类路径的根目录下,并且不能嵌套在某个深处。这是因为 Hibernate Environment loads the file 的方式

最佳答案

我添加了一个hibernate.properties,并在其中设置属性。成功了!

hibernate.properties 文件必须位于类路径的根目录下,不能嵌套在某个深处。这是因为 Hibernate Environment loads the file 的方式

关于spring - Hibernate 3.6 动态方言解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47937717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com