1

这是我的弹簧上下文文件

<!-- <context:property-placeholder location="classpath:jdbc.properties" />-->
<context:component-scan base-package="com.max.premcalc" />

<tx:annotation-driven transaction-manager="hibernateTransactionManager" />

<bean id="jspViewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/view/" />
    <property name="suffix" value=".jsp" />
</bean>

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/inquizzitiveds"/>

<!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${database.driver}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.user}" />
    <property name="password" value="${database.password}" />
</bean> -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="annotatedClasses">
        <list>
            <value>com.max.premcalc.domain.PremiumCalc</value>
            <value>com.max.premcalc.domain.Inputparam</value>
            <value>com.max.premcalc.domain.RiderInput</value>
            <value>com.max.premcalc.domain.Rider</value>
            <value>com.max.premcalc.domain.Product</value>
            <value>com.max.premcalc.domain.Products</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
        </props>
    </property>
</bean>

<bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="MainController" class="com.max.premcalc.controller.MainController" />
<bean id = "calcDao" class="com.max.premcalc.dao.CalcDaoImpl"/>
<bean id = "calcService" class="com.max.premcalc.service.CalcServiceImpl"/> 
<bean id = "inputparam" class = "com.max.premcalc.domain.Inputparam"/>

但我收到了这个错误:

Injection of autowired dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Could not autowire field: private 
com.max.premcalc.service.CalcService com.max.premcalc.controller.MainController.calcService; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'calcServiceImpl': Injection 
of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: 
Could not autowire field: com.max.premcalc.dao.CalcDao com.max.premcalc.service.CalcServiceImpl.calcDao; nested 
exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': 
Injection of autowired dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void 
com.max.premcalc.dao.CalcDaoImpl.setSessionFactory(org.hibernate.SessionFactory); nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in 
ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Invocation of init method failed; nested exception is 
org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
4

2 回答 2

2

您需要设置属性

hibernate.dialect

在 hibernate(persistence.xml 或 bean 声明)配置中,该值取决于您的数据库,例如:

Postgres: org.hibernate.dialect.PostgreSQL82Dialect
Oracle: org.hibernate.dialect.Oracle10gDialect

所有可能的选项都在这里听

例如,一个示例 persistence.xml 如下所示:

<persistence-unit>
    ...
    <properties>
        ...
        <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
        ...
    </properties>
</persistence-unit>

请检查您的属性文件是否有密钥hibernate-dialect

于 2013-09-17T11:34:27.817 回答
0

堆栈跟踪非常清楚

org.hibernate.HibernateException: Hibernate Dialect must be explicitly set

显然hibernate不能使用元数据来检索要使用的数据库类型,因此必须显式配置hibernate方言。

于 2013-09-17T11:29:53.327 回答