Эту проблему сложно объяснить, поэтому взгляните на проект: https://github.com/darzz/boot_bug Это минимальная настройка, воспроизводящая ошибку.
Описание. Стек приложений - это Spring Boot с Spring Data и Spring Batch. Файл testNamedQuery.hbm.xml находится в папке src / main / resources / query.
При запуске из класса 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
Получается, что при запуске тестов файлы * .hbm.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.
Есть у кого-нибудь идеи?