Spring에서 다수의 JPA persistence units 을 세팅하려다 아래와 같이 에러가 나서 애먹었다;;
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [spring/applicationContext-jpa.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No single default persistence unit defined in {classpath:META-INF/persistence.xml} at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) |
먼저 persistence.xml 에 아래와 같이 persistence-unit 을 teacher라는 이름으로 추가하고..
<persistence xmlns="http://java.sun.com/xml/ns/persistence" <persistence-unit name="student"/> |
아래와 같이 applicationContext-jpa.xml 라는 파일 내 entityManagerFactory bean 정의 부분의 property에
persistenceUnitName을 teacher라는 value 값으로 추가 했더니 나온 에러였다.
<bean id="entityManagerFactory" <!-- Use Hibernate as JPA engine --> <!-- <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" </property> |
결론은 한개의 entityManagerFactory bean에 복수의 persistenceUnitName을 지정할 수 없다는것!
따라서 아래와 같이 entityMangerFactory2 라는 bean을 추가 생성하고
<!-- JPA EntityManagerFactory --> <!-- Use Hibernate as JPA engine --> <!-- <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" </property>
<!-- Use Hibernate as JPA engine --> <!-- <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter" </property> |
각 jpaStudentDao.java 와 jpaTeacherDao.java 에 아래와 같이 (uniName =" ") 을 구분하여 지정하여 해결했다!
@Repository("studentDao") @Transactional |
@Repository("teacherDao") @Transactional |
'Spring Framework' 카테고리의 다른 글
JSON parse error: Cannot deserialize instance of `java.lang.Long` out of START_OBJECT token (1) | 2020.01.01 |
---|---|
MyBatis 연동시 sqlSession을 인식 못할때 (0) | 2016.09.02 |
SpringMVC 정적인 리소스 맵핑 설정 (0) | 2016.08.29 |
Maven을 통해 프로젝트 빌드 중 invalid LOC header (bad signature) 에러 발생시 대처 법 (0) | 2012.10.09 |
SpringSource Tool Suite 에서 maven 프로젝트 copy 후 rename했음에도 context-root가 바뀌지 않는 경우 해결 (0) | 2012.09.28 |
댓글