Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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 带有Spring和Hibernate的JUnit无法正确加载配置_Java_Spring_Hibernate_Junit - Fatal编程技术网

Java 带有Spring和Hibernate的JUnit无法正确加载配置

Java 带有Spring和Hibernate的JUnit无法正确加载配置,java,spring,hibernate,junit,Java,Spring,Hibernate,Junit,我有一个单元测试java类文件,其中需要同时使用Spring和Hibernate 以下是模块的顶部: @RunWith( SpringJUnit4ClassRunner.class ) @ContextConfiguration(locations={"classpath:server-data-config.xml"}) @Transactional public class MyTest { // Other code follows 如您所见,我从server-data-conf

我有一个单元测试java类文件,其中需要同时使用Spring和Hibernate

以下是模块的顶部:

@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration(locations={"classpath:server-data-config.xml"})
@Transactional
public class MyTest {
    // Other code follows
如您所见,我从server-data-config.xml加载了Spring的上下文配置

它包含以下需要会话工厂的配置:

<bean id="txnManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean> 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
这是因为我的会话工厂是在hibernate.cfg.xml中定义的,我没有做任何事情来加载它:

<hibernate-configuration>
    <session-factory>
        Some stuff here
    </session-factory>
</hibernate-configuration>

为了读取hibernate.cfg.xml,我应该在单元测试java类中添加一些注释吗?如何修复此异常?

您必须在xml中指定可以找到hibernate配置的位置

弹簧配置:

    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="configLocation">
    <value>file:src/hibernate.cfg.xml</value> // your hibernate.cfg.xml location
    </property>
    </bean>
由于使用后一种方法,您拥有sessionfactory,因此您可以这样配置它:

SessionFactory sessionFactory = new Configuration()
        .configure("/persistence/hibernate.cfg.xml")
        .buildSessionFactory();

有没有一种方法可以直接用注释加载hibernate.cfg.xml?可能有,但据我所知没有。
SessionFactory sessionFactory = new Configuration()
        .configure("/persistence/hibernate.cfg.xml")
        .buildSessionFactory();