Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未拾取hibernate.cfg.xml_Java_Xml_Spring_Hibernate_Maven - Fatal编程技术网

Java 未拾取hibernate.cfg.xml

Java 未拾取hibernate.cfg.xml,java,xml,spring,hibernate,maven,Java,Xml,Spring,Hibernate,Maven,我创建了一个maven web项目。堆栈是Spring+hibernate+jersey 我在src/main/resources/path下有这个hibernate.cfg.xml。当我尝试将其部署为tomcat时,我得到了这个stacktrace Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'WorkspacesDBSessionFactor

我创建了一个maven web项目。堆栈是Spring+hibernate+jersey

我在src/main/resources/path下有这个hibernate.cfg.xml。当我尝试将其部署为tomcat时,我得到了这个stacktrace

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'WorkspacesDBSessionFactory' defined in class path resource [ApplicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1512)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:917)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:860)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:775)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489)
    ... 24 more
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
    at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)
    at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)
    at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:422)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:863)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:782)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:188)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509)
    ... 34 more
当我检查DiagnolFactory.java:57时,我找到了代码

public static Dialect determineDialect(String databaseName, int databaseMajorVersion) {
    if ( databaseName == null ) {
        throw new HibernateException( "Hibernate Dialect must be explicitly set" );
    }
因此,实际问题是没有加载hibernate.cfg.xml。因此,我删除了该文件并尝试部署。我又得到了同样的线索

我的ApplicationContext.xml是

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:util="http://www.springframework.org/schema/util" xmlns:jee="http://www.springframework.org/schema/jee"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
                        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
                        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
                        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd
                        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd">

    <context:annotation-config />
    <context:component-scan base-package="org.work.autogen, org.work.db.api, org.work.services, org.work.routes">
    </context:component-scan>

    <bean id="log4jInitializer"
        class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
        <property name="targetMethod" value="initLogging" />
        <property name="arguments">
            <list>
                <value>classpath:log4j.properties</value>
            </list>
        </property>
    </bean>

    <bean id="WorkspacesDBSessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <!-- <property name="mappingResources">
            <list>
                <value>Appraisal.hbm.xml</value>
                <value>Managers.hbm.xml</value>
                <value>EmployeeSecretUuid.hbm.xml</value>
                <value>Work.hbm.xml</value>
                <value>Company.hbm.xml</value>
                <value>Employee.hbm.xml</value>
            </list>
        </property> -->
        <property name="hibernateProperties">
            <props>
                <prop key="dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.default_schema">Workspacedb</prop>
            </props>
        </property>
    </bean>
</beans>

类路径:log4j.properties
org.hibernate.dialogue.mysql5dialogue
工作空间数据库
我的Hibernate.cfg.xml是

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory><!-- name="sessionFactory"> --> 
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">password</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/Workspacedb</property>
        <property name="hibernate.connection.username">workadmin</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.search.autoregister_listeners">false</property>
        <property name="hibernate.show_sql">true</property>
        <mapping resource="Appraisal.hbm.xml" />
        <mapping resource="Managers.hbm.xml" />
        <mapping resource="EmployeeSecretUuid.hbm.xml" />
        <mapping resource="Work.hbm.xml" />
        <mapping resource="Company.hbm.xml" />
        <mapping resource="Employee.hbm.xml" />
    </session-factory>
</hibernate-configuration>

假的
com.mysql.jdbc.Driver
密码
jdbc:mysql://localhost:3306/Workspacedb
工作管理员
org.hibernate.dialogue.mysqldialogue
假的
真的
我是如何做到这一点的


谢谢。

根据日志,是
LocalSessionFactoryBean
试图配置
Hibernate

此外,在Spring配置文件中,您没有提到任何地方有单独的Hibernate配置文件

所以在这段代码中:

<bean id="WorkspacesDBSessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="hibernateProperties">
            <props>
                <prop key="dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.default_schema">Workspacedb</prop>
            </props>
        </property>
</bean>
你可以在这篇文章中看到详细的解释:

根据日志,是
LocalSessionFactoryBean
试图配置
Hibernate

此外,在Spring配置文件中,您没有提到任何地方有单独的Hibernate配置文件

所以在这段代码中:

<bean id="WorkspacesDBSessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="hibernateProperties">
            <props>
                <prop key="dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.default_schema">Workspacedb</prop>
            </props>
        </property>
</bean>
你可以在这篇文章中看到详细的解释:

根据日志,是
LocalSessionFactoryBean
试图配置
Hibernate

此外,在Spring配置文件中,您没有提到任何地方有单独的Hibernate配置文件

所以在这段代码中:

<bean id="WorkspacesDBSessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="hibernateProperties">
            <props>
                <prop key="dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.default_schema">Workspacedb</prop>
            </props>
        </property>
</bean>
你可以在这篇文章中看到详细的解释:

根据日志,是
LocalSessionFactoryBean
试图配置
Hibernate

此外,在Spring配置文件中,您没有提到任何地方有单独的Hibernate配置文件

所以在这段代码中:

<bean id="WorkspacesDBSessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="hibernateProperties">
            <props>
                <prop key="dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.default_schema">Workspacedb</prop>
            </props>
        </property>
</bean>
你可以在这篇文章中看到详细的解释:

您的hibernate.cfg.xml必须位于类路径中才能自动拾取。尝试放置/src/main/java。
因为Hibernate首先在CLASSPATH default(/src/main/java)中查找

您的Hibernate.cfg.xml必须在CLASSPATH中才能自动拾取。尝试放置/src/main/java。
因为Hibernate首先在CLASSPATH default(/src/main/java)中查找

您的Hibernate.cfg.xml必须在CLASSPATH中才能自动拾取。尝试放置/src/main/java。
因为Hibernate首先在CLASSPATH default(/src/main/java)中查找

您的Hibernate.cfg.xml必须在CLASSPATH中才能自动拾取。尝试放置/src/main/java。

因为Hibernate首先在CLASSPATH default(/src/main/java)

中查找,所以我的目的是自动提取Hibernate.cfg.xml。我不想以编程方式显式调用它。hibernate.cfg.xml文件在项目中的位置是什么?我的目的是自动获取hibernate.cfg.xml。我不想以编程方式显式调用它。hibernate.cfg.xml文件在项目中的位置是什么?我的目的是自动获取hibernate.cfg.xml。我不想以编程方式显式调用它。hibernate.cfg.xml文件在项目中的位置是什么?我的目的是自动获取hibernate.cfg.xml。我不想以编程的方式显式地调用它。hibernate.cfg.xml文件在您的项目中的位置是什么?它是一个maven项目,如本问题的标记所示,因此将其保存在
src/main/resources
中是将任何配置文件放置在maven中的正确方法。一旦项目构建完成,那么配置文件将被放置在类路径的根目录中。但是当maven运行maven时,它的配置如何?我不理解你的问题,你能详细说明一下吗?我的问题是:当他运行maven时,应用程序是如何打包的?因为将hibernate.cfg.xml放在src/main/resources中并不保证hibernate会找到它来加载它。请查看maven文档,了解maven的工作原理。对于您的问题,请检查此post-->它是一个maven项目,如此问题的标记所示,因此将其保存在
src/main/resources
中是将任何配置文件放置在maven中的正确方法。一旦项目构建完成,那么配置文件将被放置在类路径的根目录中。但是当maven运行maven时,它的配置如何?我不理解你的问题,你能详细说明一下吗?我的问题是:当他运行maven时,应用程序是如何打包的?因为将hibernate.cfg.xml放在src/main/resources中并不保证hibernate会找到它来加载它。请查看maven文档,了解maven的工作原理。对于您的问题,请检查此post-->它是一个maven项目,如此问题的标记所示,因此将其保存在
src/main/resources
中是将任何配置文件放置在maven中的正确方法。一旦项目构建完成,那么配置文件将被放置在类路径的根目录中。但是当maven运行maven时,它的配置如何?我不理解你的问题,你能详细说明一下吗?我的问题是:当他运行maven时,应用程序是如何打包的?因为将hibernate.cfg.xml放在src/main/resources中并不保证hibernate会找到它来加载它。请查看maven文档,了解maven的工作原理。对于您的问题,请检查此帖子-->它是一个maven项目,如此问题的标记所示,因此请将其保留在
src/main/resources
i中