Мое приложение с помощью пружины и JPA, у меня есть два конфигурационный файл:Отсутствует транзакционный EntityManager;
AppConfig:
@Configuration
@EnableTransactionManagement
@ComponentScan(basePackages = { "com.test.api" })
@EnableJpaRepositories("com.test.api.repository")
@PropertySource("classpath:application.properties")
public class AppConfig {
}
WebAppConfig:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.test.webservice" })
public static class WebAppConfig extends WebMvcConfigurerAdapter {
}
Почти отлично работает, но когда-то он сгенерирует исключение: Caused by: java.lang.IllegalStateException: No transactional EntityManager available
даже Я просто выбираю запись (не создавать, обновлять или удалять данные.)
Если я переведу аннотацию: @ComponentScan(basePackages = { "com.test.api" })
к классу WebAppConfig и удалите: @ComponentScan(basePackages = { "com.test.webservice" })
, тогда исключение исчезнет, но весенний контекст загружает много раз, когда запуск сервера и весенние бобы дублируются.
Или Если я использую entityManager.getEntityManagerFactory().createEntityManager().unwrap(Session.class)
вместо entityManager.unwrap(Session.class)
, то исключение также исчезает.
Как его решить?
Спасибо, но это не работает @dunni. Это то же исключение. – namtn
Не могли бы вы опубликовать свой код, где вы настраиваете EntityManager? Возможно, в этом есть ошибка. – dunni