簡體   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