Spring Boot 3.2.2: интерфейс EntityManagerFactory org.hibernate.SessionFactory, похоже, конфликтует с миксином Spring EnJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Boot 3.2.2: интерфейс EntityManagerFactory org.hibernate.SessionFactory, похоже, конфликтует с миксином Spring En

Сообщение Anonymous »


При переходе с Spring Boot 2.4.3 на Spring Boot 3.2.2 (с использованием Java 17.0.2) я столкнулся со следующей проблемой с Spring Data JPA и Hibernate >:

org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем defaultEntityManagerFactory, определенным в ресурсе пути к классу [de/mycompany/vector/backend/config/DefaultJPAConfig.class]: Интерфейс EntityManagerFactory [interface org.hibernate.SessionFactory], похоже, конфликтует с миксином Spring EntityManagerFactoryInfo. Рассмотрите возможность сброса свойства 'entityManagerFactoryInterface' на простое [jakarta.persistence.EntityManagerFactory] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ... в org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) в de.mycompany.vector.backend.Application.main(Application.java:21) Вызвано: java.lang.IllegalStateException: интерфейс EntityManagerFactory [interface org.hibernate.SessionFactory], кажется, конфликтует с миксином Spring EntityManagerFactoryInfo - рассмотрите возможность сброса свойства 'entityManagerFactoryInterface' на простое [jakarta.persistence.EntityManagerFactory] в org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.createEntityManagerFactoryProxy(AbstractEntityManagerFactoryBean.java:469) ... Вызвано: java.lang.IllegalArgumentException: методы с той же сигнатурой getSchemaManager(), но несовместимыми типами возврата: [interface org.hibernate.relational.SchemaManager, интерфейс jakarta.persistence.SchemaManager] в java.base/java.lang.reflect.ProxyGenerator.checkReturnTypes(ProxyGenerator.java:311) Полный вывод командной строки при запуске приложения выглядит следующим образом:

jdk17.0.2\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:61495,suspend=y,server=n -XX:TieredStopAtLevel=1 -Dspring.profiles. active=dev -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints .jmx.exposure.include=*" -javaagent:C:\Users\Me\AppData\Local\JetBrains\IntelliJIdea2023.3\captureAgent\debugger-agent.jar=file:/C:/Users/Me/AppData/Local /Temp/1/capture.props -Dfile.encoding=UTF-8 -classpath C:\Users\Me\AppData\Local\Temp\1\classpath477957752.jar de.mycompany.vector.backend.Application Подключено к целевой виртуальной машине, адрес: «127.0.0.1:61495», транспорт: «сокет». MySpringBootBackendApp [бэкэнд Spring Boot] 2024-02-27 17:33:51,302 ИНФОРМАЦИЯ [background-preinit] o.h.v.i.u.Версия: HV000001: Hibernate Validator 8.0.1.Final 2024-02-27 17:33:51,380 ИНФОРМАЦИЯ [main] osb.StartupInfoLogger: запуск приложения с использованием Java 17.0.2 с PID 30932 (C:\Develop\projects\myapp\src\backend\target\classes, запущенный мной в C: \Develop\projects\myapp\src\backend) 2024-02-27 17:33:51,381 DEBUG [main] o.s.b.StartupInfoLogger: запуск с Spring Boot v3.2.2, Spring v6.1.3 2024-02-27 17:33:51,382 ИНФОРМАЦИЯ [main] o.s.b.SpringApplication: активен следующий 1 профиль: «dev» 2024-02-27 17:33:55,279 ИНФОРМАЦИЯ [main] o.s.d.r.c.RepositoryConfigurationDelegate: загрузка репозиториев Spring Data JPA в режиме DEFAULT. 2024-02-27 17:33:55,536 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate: завершено сканирование репозитория Spring Data за 244 мс. Найдено 19 интерфейсов репозитория JPA. 2024-02-27 17:33:59,911 ИНФОРМАЦИЯ [основная] o.s.b.w.e.t.TomcatWebServer: Tomcat инициализирован с портом 8081 (http) 2024-02-27 17:33:59,930 ИНФОРМАЦИЯ [main] o.a.j.l.DirectJDKLog: Инициализация ProtocolHandler ["http-nio-8081"] 2024-02-27 17:33:59,934 ИНФОРМАЦИЯ [основная] o.a.j.l.DirectJDKLog: Запуск службы [Tomcat] 2024-02-27 17:33:59,935 ИНФОРМАЦИЯ [основная] o.a.j.l.DirectJDKLog: Запуск механизма сервлетов: [Apache Tomcat/10.1.18] 2024-02-27 17:34:00,109 ИНФОРМАЦИЯ [main] o.a.j.l.DirectJDKLog: Инициализация встроенного Spring WebApplicationContext 2024-02-27 17:34:00,112 INFO [main] o.s.b.w.s.c.ServletWebServerApplicationContext: Root WebApplicationContext: инициализация завершена за 8480 мс 2024-02-27 17:34:03,136 ИНФОРМАЦИЯ [основная] ofc.i.ls.Slf4jLog: База данных: jdbc:oracle:thin:@MS9161.itrm.de:1521:NBPT (Oracle 19.0) 2024-02-27 17:34:04,731 ИНФОРМАЦИЯ [основная] of.f.c.i.ls.Slf4jLog: успешно проверено 133 миграции (время выполнения 00:01.188с) 2024-02-27 17:34:05,155 ИНФОРМАЦИЯ [основная] of.f.c.i.ls.Slf4jLog: Текущая версия схемы "NBP_TEST": 2.121 2024-02-27 17:34:05,187 ИНФОРМАЦИЯ [основная] of.f.c.i.ls.Slf4jLog: Схема «NBP_TEST» актуальна. Никакой миграции не требуется. 2024-02-27 17:34:06,689 ИНФОРМАЦИЯ [main] o.es.o.t.o.p.UpfrontAllocatingPageSource: выделение 20,0 МБ частями 2024-02-27 17:34:06,739 ИНФОРМАЦИЯ [основная] oec.EhcacheManager: Кэш «keyAccountDataCache» создан в EhcacheManager. 2024-02-27 17:34:06,746 ИНФОРМАЦИЯ [основная] o.es.o.t.o.p.UpfrontAllocatingPageSource: выделение 10,0 МБ частями 2024-02-27 17:34:06,752 ИНФОРМАЦИЯ [основная] o.e.c.EhcacheManager: Кэш 'meterInfoCache' создан в EhcacheManager. 2024-02-27 17:34:06,798 ИНФОРМАЦИЯ [основная] o.e.j.Eh107CacheManager: регистрация Ehcache MBean javax.cache:type=CacheStatistics,CacheManager=file./C./Develop/projects/myapp/src/backend/target/classes/ ehcache.xml,Cache=keyAccountDataCache 2024-02-27 17:34:06,802 ИНФОРМАЦИЯ [основная] o.e.j.Eh107CacheManager: Регистрация Ehcache MBean javax.cache:type=CacheStatistics,CacheManager=file./C./Develop/projects/myapp/src/backend/target/classes/ ehcache.xml,Cache=meterInfoCache 2024-02-27 17:34:07,011 ИНФОРМАЦИЯ [основная] o.h.j.i.u.LogHelper: HHH000204: Обработка PersistenceUnitInfo [имя: по умолчанию] 2024-02-27 17:34:07,149 ИНФОРМАЦИЯ [основная] o.h.Версия: HHH000412: Базовая версия Hibernate ORM 6.4.1.Final 2024-02-27 17:34:07,238 ИНФОРМАЦИЯ [основной] o.h.c.i.RegionFactoryInitiator: HHH000026: Кэш второго уровня отключен 2024-02-27 17:34:08,824 ИНФОРМАЦИЯ [main] o.s.o.j.p.SpringPersistenceUnitInfo: нет настройки LoadTimeWeaver: игнорирование преобразователя классов JPA 2024-02-27 17:34:12,277 INFO [main] o.h.e.t.j.p.i.JtaPlatformInitiator: HHH000489: платформа JTA недоступна (установите «hibernate.transaction.jta.platform», чтобы включить интеграцию платформы JTA) 2024-02-27 17:34:12,350 INFO [main] o.s.o.j.AbstractEntityManagerFactoryBean: инициализированный JPA EntityManagerFactory для единицы персистентности «по умолчанию» 2024-02-27 17:34:12,356 WARN [main] o.s.c.s.AbstractApplicationContext: исключение, возникшее во время инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем defaultEntityManagerFactory, определенным в ресурсе пути к классу [de/mycompany/vector/backend/config/DefaultJPAConfig.class]: интерфейс EntityManagerFactory [interface org.hibernate.SessionFactory], кажется, конфликтует с миксином Spring EntityManagerFactoryInfo - рассмотрите возможность сброса свойства 'entityManagerFactoryInterface' на простое [jakarta.persistence.EntityManagerFactory] 2024-02-27 17:34:12,369 ИНФОРМАЦИЯ [основная] oec.EhcacheManager: Кэш «keyAccountDataCache» удален из EhcacheManager. 2024-02-27 17:34:12,372 ИНФОРМАЦИЯ [main] o.e.c.EhcacheManager: Кэш «meterInfoCache» удален из EhcacheManager. 2024-02-27 17:34:12,382 ИНФОРМАЦИЯ [основная] o.a.j.l.DirectJDKLog: остановка службы [Tomcat] 2024-02-27 17:34:12,415 ИНФОРМАЦИЯ [основная] o.s.b.al.ConditionEvaluationReportLogger: Ошибка запуска ApplicationContext. Чтобы отобразить отчет об оценке состояния, повторно запустите приложение с включенной «отладкой». 2024-02-27 17:34:12,450 ОШИБКА [основная] o.s.b.SpringApplication: сбой при запуске приложения org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем 'defaultEntityManagerFactory', определенным в ресурсе пути к классу [de/mycompany/vector/backend/config/DefaultJPAConfig.class]: интерфейс EntityManagerFactory [интерфейс org.hibernate.SessionFactory] кажется для конфликта с миксином Spring EntityManagerFactoryInfo - рассмотрите возможность сброса свойства 'entityManagerFactoryInterface' на простой [jakarta.persistence.EntityManagerFactory] в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) в org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) в org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) в org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) в org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1231) в org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:949) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) в org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) в org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) в org.springframework.boot.SpringApplication.run(SpringApplication.java:334) в org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) в org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) в de.mycompany.vector.backend.Application.main(Application.java:21) Вызвано: java.lang.IllegalStateException: интерфейс EntityManagerFactory [interface org.hibernate.SessionFactory], кажется, конфликтует с миксином Spring EntityManagerFactoryInfo - рассмотрите возможность сброса свойства 'entityManagerFactoryInterface' на простое [jakarta.persistence.EntityManagerFactory] в org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.createEntityManagerFactoryProxy(AbstractEntityManagerFactoryBean.java:469) в org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:403) в org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1820) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1769) ... 16 общих фреймов опущены Вызвано: java.lang.IllegalArgumentException: методы с той же сигнатурой getSchemaManager(), но несовместимыми типами возврата: [interface org.hibernate.relational.SchemaManager, интерфейс jakarta.persistence.SchemaManager] в java.base/java.lang.reflect.ProxyGenerator.checkReturnTypes(ProxyGenerator.java:311) в java.base/java.lang.reflect.ProxyGenerator.generateClassFile(ProxyGenerator.java:488) в java.base/java.lang.reflect.ProxyGenerator.generateProxyClass(ProxyGenerator.java:178) в java.base/java.lang.reflect.Proxy$ProxyBuilder.defineProxyClass(Proxy.java:558) в java.base/java.lang.reflect.Proxy$ProxyBuilder.build(Proxy.java:670) в java.base/java.lang.reflect.Proxy.lambda$getProxyConstructor$1(Proxy.java:440) в java.base/jdk.internal.loader.AbstractClassLoaderValue$Memoizer.get(AbstractClassLoaderValue.java:329) в java.base/jdk.internal.loader.AbstractClassLoaderValue.computeIfAbsent(AbstractClassLoaderValue.java:205) в java.base/java.lang.reflect.Proxy.getProxyConstructor(Proxy.java:438) в java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1037) в org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.createEntityManagerFactoryProxy(AbstractEntityManagerFactoryBean.java:464) ... 20 общих фреймов опущены Отключено от целевой виртуальной машины, адрес: «127.0.0.1:61495», транспорт: «сокет». Процесс завершен с кодом завершения 1 Моя кодировка показана ниже (класс 'DefaultJPAConfig'):
Исключение возникает после создания bean-компонента 'defaultEntityManagerFactory'.

пакет de.mycompany.vector.backend.config; импортировать jakarta.persistence.EntityManagerFactory; импортировать org.springframework.beans.factory.annotation.Autowired; импортировать org.springframework.beans.factory.annotation.Qualifier; импортировать org.springframework.boot.autoconfigure.orm.jpa.JpaProperties; импортировать org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder; импортировать org.springframework.context.annotation.Bean; импортировать org.springframework.context.annotation.Configuration; импортировать org.springframework.context.annotation.Primary; импортировать org.springframework.core.env.Environment; импортировать org.springframework.core.io.ClassPathResource; импортировать org.springframework.core.io.Resource; импортировать org.springframework.data.jpa.repository.config.EnableJpaRepositories; импортировать org.springframework.jdbc.core.JdbcTemplate; импортировать org.springframework.jdbc.datasource.DriverManagerDataSource; импортировать org.springframework.jdbc.datasource.init.DatabasePopulator; импортировать org.springframework.jdbc.datasource.init.DatabasePopulatorUtils; импортировать org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; импортировать org.springframework.orm.jpa.JpaTransactionManager; импортировать org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; импортировать org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; импортировать org.springframework.transaction.PlatformTransactionManager; импортировать org.springframework.transaction.annotation.EnableTransactionManagement; импортировать org.springframework.util.CollectionUtils; импортировать javax.sql.DataSource; импортировать java.util.Map; импортировать java.util.Properties; @Конфигурация @EnableTransactionManagement @EnableJpaRepositories(basePackages = "de.mycompany.vector.backend.dao", entityManagerFactoryRef = "defaultEntityManagerFactory", транзакцияManagerRef = "defaultTransactionManager" ) общественный класс DefaultJPAConfig { частная конечная среда среды; частный окончательный JpaProperties jpaProperties; public DefaultDataSourceConfig(@Autowired Environment env, @Autowired JpaProperties jpaProperties) { this.env = env; this.jpaProperties = jpaProperties; } @Bean(name = {"defaultDataSource"}) @Начальный общедоступный источник данных defaultDataSource() { если (окр == ноль) { вернуть ноль; } DriverManagerDataSource dataSource = новый DriverManagerDataSource(); Строка URL = env.getProperty("spring.datasource.url"); Строковый драйвер = env.getProperty("spring.datasource.driver-class"); String username = env.getProperty("spring.datasource.username"); Строковый пароль = env.getProperty("spring.datasource.password"); dataSource.setDriverClassName(драйвер); dataSource.setUrl(url); dataSource.setUsername(имя пользователя); dataSource.setPassword(пароль); Ресурс initSchema = новый ClassPathResource("schema.sql"); если (initSchema.exists()) { DatabasePopulator dataPopulator = новый ResourceDatabasePopulator(initSchema); DatabasePopulatorUtils.execute(databasePopulator, dataSource); } вернуть источник данных; } /** * предоставить простой шаблон jdbc для экспорта данных без использования дорогостоящих функций JPA/ORM. */ @Bean(name = {"nbpJdbcTemplate"}) общественный JdbcTemplate jdbcTemplate() { вернуть новый JdbcTemplate(defaultDataSource()); } @Bean(name = «defaultEntityManagerFactory») @Начальный @Autowired public LocalContainerEntityManagerFactoryBean defaultEntityManagerFactory( EntityManagerFactoryBuilder, @Qualifier("defaultDataSource") DataSource ds) { вернуть объектManagerFactoryBuilder .dataSource(дс) .packages("de.mycompany.vector.backend.model") .properties(jpaProperties != null ? jpaProperties.getProperties() : null) .persistenceUnit("по умолчанию") .строить(); } @Bean(name = «defaultTransactionManager») @Начальный @Autowired public PlatformTransactionManager defaultTransactionManager (EntityManagerFactoryentityManagerFactory) { вернуть новый JpaTransactionManager(entityManagerFactory); } } Конфигурация, связанная с Spring Boot/JPA, в файле контекста приложения application-dev.yml:

весна: ... йпа: # шоу-sql: правда спящий режим: ddl-auto: подтвердить именование: физическая стратегия: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl характеристики: спящий режим: jdbc: размер_пакета: 500 Джакарта: упорство: генерация схемы: сценарии: действие: создать создать-цель: создать.sql создать-источник: метаданные источник данных: URL: jdbc:oracle:thin:@myDBHost:1234:XXX имя пользователя: NBP_TEST пароль: класс драйвера: oracle.jdbc.driver.OracleDriver Хикари: тайм-аут соединения: 60000 максимальный размер пула: 5 Зависимости Maven, связанные с Spring Boot/JPA, в 'pom.xml':

org.springframework.boot spring-boot-starter-parent 3.2.2 ... ... org.springframework.boot spring-boot-starter-data-jpa org.apache.tomcat tomcat-jdbc com.oracle.database.jdbc ojdbc10 19.22.0.0 ... Любая помощь будет очень признательна!

С уважением,
Майк
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»