【问题标题】:Hibernate 3.6 dynamic dialect resolverHibernate 3.6 动态方言解析器
【发布时间】:2017-12-22 07:50:16
【问题描述】:

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

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

我的具体问题是:

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

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

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

  1. 我尝试在会话工厂的休眠属性上设置 dialect_resolvers 属性

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

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

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

    日志输出: "Dialect resolver property: null"

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

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

【问题讨论】:

    标签: spring hibernate configuration


    【解决方案1】:

    我添加了一个 hibernate.properties,并在其中设置了属性。那行得通!

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 2018-08-18
      相关资源
      最近更新 更多