2

我有一些 Spring 上下文配置

<bean name="propertyConfigurator" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="location" value="classpath:/com/net/model/jdbc.properties"/>
</bean>
            ....

<bean id="sessionFactoryToBillingDb" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  <property name="hibernateProperties">
   <props>
     <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            ....

jdbc.properties看起来像

...
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
...

我想使用 Inellij Idea 的 HQL 控制台,但出现错误:

java.lang.RuntimeException: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.dialect.MySQLDialectt.MySQLDialect] as strategy [org.hibernate.dialect.Dialect]

org.hibernate.dialect。MySQLDialectt.MySQLDialect 怎么了?

4

2 回答 2

1

您添加了一个额外的 t。这就是错误消息所说的:

无法解析名称 [org.hibernate.dialect.MySQLDialectt.MySQLDialect]

于 2015-12-27T07:00:41.113 回答
0

很可能该属性的值 ( org.hibernate.dialect.MySQLDialectt.MySQLDialect) 与您怀疑的值 ( ) 不同org.hibernate.dialect.MySQL5Dialect。所以必须有一些东西改变这个价值,而这个东西不在你展示给我们的项目部分。

我从我们在问题评论中尝试过的内容中知道这一点:

  1. 在那里写实际值而不是参数:有效,所以它不是 Hibernate 做错了
  2. 测试是否使用了文件中的其他参数:有效,因此文件读取工作正常。

你应该尝试的事情:

  1. 您需要打印出该值${hibernate.dialect}。最简单的方法是在错误的位置使用参数(例如 url 所属的 eG 或类似位置)。这会导致您在那里看到错误消息,并且您可以确定该变量的实际值是什么。
  2. 您应该对您的项目进行全文搜索以查找模式“MySQL”、“Dialectt”和“Dialect”,并查看是否找到任何可能导致这种情况的内容。
  3. 如果失败,请启动一个新项目,该项目仅包含重新创建此特定问题所需的元素,其他任何内容都没有(!)。看看它是否在那里工作,如果是这样,开始将此项目合并到您当前的项目中,直到它工作 -> 然后您发现它出错的地方。
于 2014-07-03T12:18:41.197 回答