繁体   English   中英

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

[英]*.hbm.xml mapping files not loaded in test

请看一下项目: https : //github.com/darzz/boot_bug这是最小化的设置,它再现了该错误。

描述 :应用程序堆栈是带有Spring Data和Spring Batch的Spring Boot。 src / main / resources / queries下有testNamedQuery.hbm.xml文件。

Application类运行时,批处理作业成功完成,日志中无异常。 但是,当从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

因此 ,在运行测试时,*。h​​bm.xml文件未加载! 经过研究和调试后,我认为可能已经找到了原因-为目标/测试类的测试设置了持久性单元根url,但是映射文件位于/ target / classes中。

我认为可能的原因可能与以下内容类似:http://blog.carbonfive.com/2007/05/17/using-classpath-vs-classpath-when-loading-spring-resources/

但是我不知道如何在Spring Boot中解决这个问题,而无需创建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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM