Spring Boot : 'jpaMappingContext' 이름의 bone을 만드는 중 오류가 발생했습니다. java.lang.Null 포인터예외.
Spring Boot + Spring Data Jpa + Multiple Database의 조합입니다.응용 프로그램을 시작할 때 NullPointer 예외를 따르고 있습니다.부팅 시 SPring Data가 JPA 메타데이터를 생성할 수 없는 것 같습니다.저는 이 오류와 관련된 리소스를 받지 못했습니다.
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is java.lang.NullPointerException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:736)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at com.verient.infinipay.staticcard.Application.main(Application.java:25)
... 6 more
Caused by: java.lang.NullPointerException
at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.getMetamodels(JpaMetamodelMappingContextFactoryBean.java:90)
at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:56)
at org.springframework.data.jpa.repository.config.JpaMetamodelMappingContextFactoryBean.createInstance(JpaMetamodelMappingContextFactoryBean.java:26)
at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:134)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
... 21 more
내 코드:
public EntityManagerFactory apEntityManagerFactory(
EntityManagerFactoryBuilder builder) {
return builder
.dataSource(apDataSource())
.packages(Entity1.class, Entity2.class)
.persistenceUnit("ap-persistent-unit")
.build()
.getObject();
}
@Bean
public EntityManagerFactory trEntityManagerFactory(
EntityManagerFactoryBuilder builder) {
return builder
.dataSource(trDataSource())
.packages(Entity3.class, Entity4.class)
.persistenceUnit("tr-persistent-unit")
.build()
.getObject();
}
@Bean
JpaTransactionManager apTransactionManager(@Qualifier("apEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
@Bean
JpaTransactionManager trTransactionManager(@Qualifier("trEntityManagerFactory") EntityManagerFactory entityManagerFactory) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
또한 application.properties에 다음과 같은 최대 절전 모드 속성이 있습니다.
spring.jpa.hibernate.ddl-auto: update
spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.database: H2
spring.jpa.show-sql: true
스프링 부팅에서는 클래스 경로에 이미 있는 데이터 소스에 대해 자동 구성 클래스가 기본적으로 활성화되어 있습니다.사용하지 않도록 설정할 자동 구성 클래스를 명시적으로 제외해야 합니다.
예:
@EnableAutoConfiguration(exclude = {JndiConnectionFactoryAutoConfiguration.class,DataSourceAutoConfiguration.class,
HibernateJpaAutoConfiguration.class,JpaRepositoriesAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class})
@ComponentScan
public class MyBootApplication {
public static void main(String[] args) {
SpringApplication.run(MyBootApplication.class, args);
}
}
제가 보기에 이것은 다음과 같은 맞춤형 구현 때문인 것으로 밝혀졌습니다.org.hibernate.usertype.UserType
JSON 유형을 Java 개체에 매핑하는 데 사용했습니다.
저의 경우에는 java.util에 매핑되어 있었습니다.지도와 Spring Data JPA의 이러한 변경으로 인해 해당 버전으로 업그레이드할 때 회귀가 발생했습니다.
수정 사항은 지도에 대한 일반 유형을 명시적으로 설정하는 것이었습니다.Map<String, Object>
나의 경우에는
아이디어에 대해 비샬에게 감사드립니다.제 경우에는 제네릭이 없는 구현이었습니다.javax.persistence.AttributeConverter
이 예외를 유발한 것.변화하는class MapConverter implements AttributeConverter<Map, String> { ... }
로.class MapConverter implements AttributeConverter<Map<String, Object>, String> { ... }
정말 도움이 되었습니다.
저는 일대일 관계에서의 매핑과 관련하여 언급된 문제에 직면했습니다.
제 앱은 다음과 같은 OneToOne 관계를 가지고 있습니다.
A ||---|| B
B ||---|| C
Since its OnetoOne, I kept entity B primary key same as entity A, using @MapsId as mentioned here
https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/
Similarly I kept entity C primary key same as entity B.
나는 이렇게 관계를 바꿔서 이것을 고쳤습니다.
A ||---|| B
A ||---|| C
언급URL : https://stackoverflow.com/questions/30271112/spring-boot-error-creating-bean-with-name-jpamappingcontext-java-lang-nullp
'programing' 카테고리의 다른 글
asp.net : 잘못된 포스트백 또는 콜백 인수 (0) | 2023.08.04 |
---|---|
Oracle에서 ORDER BY 다음에 +0이 표시되는 것은 무엇입니까? (0) | 2023.08.04 |
MySQL EXPLE: "인덱스 사용" vs."인덱스 조건 사용" (0) | 2023.08.04 |
이미지를 NSUserDefaults에 저장하시겠습니까? (0) | 2023.08.04 |
web.config의 단일 폴더에 대해 익명 인증을 허용하시겠습니까? (0) | 2023.08.04 |