Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 *.hbm.xml映射文件未加载到测试中_Java_Spring_Hibernate_Spring Boot_Hibernate Mapping - Fatal编程技术网

Java *.hbm.xml映射文件未加载到测试中

Java *.hbm.xml映射文件未加载到测试中,java,spring,hibernate,spring-boot,hibernate-mapping,Java,Spring,Hibernate,Spring Boot,Hibernate Mapping,请看一下该项目: 这是复制错误的最小设置 说明: 应用程序堆栈是带有Spring数据和Spring批处理的Spring引导。 src/main/resources/querys下有testNamedQuery.hbm.xml文件 从应用程序运行时,批处理作业成功完成,日志中没有异常。但是,当从ApplicationNotWorking类运行时(该类是精确副本),仅将其放入测试源根目录中,批处理作业失败: Caused by: org.hibernate.MappingException: Nam

请看一下该项目: 这是复制错误的最小设置

说明: 应用程序堆栈是带有Spring数据和Spring批处理的Spring引导。 src/main/resources/querys下有testNamedQuery.hbm.xml文件

从应用程序运行时,批处理作业成功完成,日志中没有异常。但是,当从ApplicationNotWorking类运行时(该类是精确副本),仅将其放入测试源根目录中,批处理作业失败:

Caused by: org.hibernate.MappingException: Named query not known: findPersonNames
    at org.hibernate.internal.AbstractSessionImpl.getNamedQuery(AbstractSessionImpl.java:177) ~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
    at org.springframework.batch.item.database.HibernateItemReaderHelper.createQuery(HibernateItemReaderHelper.java:146) ~[spring-batch-infrastructure-3.0.5.RELEASE.jar:3.0.5.RELEASE]
    at org.springframework.batch.item.database.HibernateItemReaderHelper.getForwardOnlyCursor(HibernateItemReaderHelper.java:123) ~[spring-batch-infrastructure-3.0.5.RELEASE.jar:3.0.5.RELEASE]
    at org.springframework.batch.item.database.HibernateCursorItemReader.doOpen(HibernateCursorItemReader.java:185) ~[spring-batch-infrastructure-3.0.5.RELEASE.jar:3.0.5.RELEASE]
    at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:144) ~[spring-batch-infrastructure-3.0.5.RELEASE.jar:3.0.5.RELEASE]
    ... 39 common frames omitted
因此,在运行测试时,*.hbm.xml文件似乎没有加载! 在研究和调试之后,我想,我可能已经发现原因-持久化单元根url是为测试设置的,用于目标/测试类,但是映射文件位于/target/classes中

可能的原因在我看来可能与这里描述的类似

但我不知道如何在SpringBoot中解决这个问题,而不只是为了测试目的而创建persistence.xml配置。也不希望将*.hbm.xml文件从main/resources复制到test/resources


有人有想法吗?

如果您想在测试期间加载所有资源/bean,那么您应该以不同的方式编写测试

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@TransactionConfiguration(defaultRollback = true)
@Transactional
public class DummyTest{

    @Test
    public void test(){
       //
  }
}

这将加载所有具有hbm映射的资源。

请尝试在存储库或配置类上添加
@EnableJpaRepositories(basePackages=“com.example.your.package”)

您好,很遗憾,这不是解决方案。我知道这是编写测试的正确方法,但在这两种情况下都存在问题。