2012-05-31 2 views
0

eclipse + eclipselink + maven2 + mysql + jpa 2.0 + java SE를 사용하고 있습니다.DAO 클래스가 persistence.xml을 볼 수 없습니다.

Eclipse로 Entity 클래스에서 MySQL 테이블을 만들 수 있습니다. persistence.xml은 src/main/resources/META-INF/...에 있습니다.

또한 프로덕션 및 테스트를 위해 이클립스에 데이터베이스 연결이 지정되어 있습니다. 어느 쪽이든 프로젝트와 함께 선택되어 작동하는 것 같습니다.

프로젝트와 함께 사용되는 데이터 원본에 따라 테이블이 선택한 데이터베이스에 만들어집니다. 데이터베이스 연결 정보로 persistence.xml에있는 내용이 무시됩니다 (예상되는 내용이 확실하지 않음). 또한 persistence.xml을 마우스 오른쪽 버튼으로 클릭하고 'JPA 도구'> '클래스 목록 동기화'를 선택하십시오. 파일은 엔터티 클래스로 업데이트됩니다.

persistence.xml도 필요합니다. 그렇지 않으면 테이블 중 하나에서 테이블이 만들어지지 않습니다. (파일의 이름을 변경하여 테스트 됨)

이전에 필자는 테스트를 위해 퍼팅하고로드하여 DAO 메소드를 실행할 수도있었습니다. 또한 Eclipse 패키지 탐색기에 'JPA'라는 메뉴 항목이 있는데, 더 이상 존재하지 않는 프로젝트의 JPA 엔티티를 나열합니다.

프로젝트를 변경하지 않았습니다 (컴퓨터는 밤에만 닫았습니다). 프로젝트를 연 다음에, 나는 더 이상 DAO-방법 중 하나를 수행 할 수 없었다 나는 다음과 같은 오류 얻을 :

No Persistence provider for EntityManager named xxx 

같은 오류가 DAO-방법을 갖는 기본 클래스에 대한 제공, JUnit 테스트를 Eclipse에 의해 실행되었고 Maven에 의해 동일한 테스트가 실행되었습니다.

참고 : 엔티티에서 여전히 테이블을 만들 수 있습니다.

어떤 조언이 필요합니까?

답변

0

문제는 pom.xml 파일에 있었다.

eclipselink가 필요했기 때문에 최대 절전 모드에 대한 종속성이있었습니다.

잘못된 : 이것은 내가

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>4.1.3.Final</version> 
</dependency> 

권리가 무엇인가 : 그것은

<dependency> 
    <groupId>org.eclipse.persistence</groupId> 
    <artifactId>eclipselink</artifactId> 
    <version>2.0.0</version> 
    <scope>compile</scope> 
</dependency> 

나는 순전히 가능한 모든 테스트하여 솔루션을 가지고 것으로 생각되었다. 내가 이전에 같은 pom & 프로젝트로 테스트를 수행 할 수 있었기 때문에 어떻게 대치를 시도했는지 확신 할 수 없다.

아무런 오류가 없거나 작동하는 방식이 다소 잘못되었을 수 있음을 시사하지 않았습니다.

잘 모르겠지만 적어도 다시 작동합니다.

0

일반적으로 리소스 디렉토리가 응용 프로그램 컨테이너에 배포되어 있지 않기 때문입니다. Eclipse에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 탐색기에서 특성을 선택하십시오. 그런 다음, 배포 총회 속성을 선택하고 "/ SRC/메인/자원이"전개되고 있음을 확인합니다

Deployment Assembly

+0

때때로 'Deployment Assembly'속성을 사용하여 회상합니다 ...하지만 무엇이 맞는지. 이제는 그 옵션을 사용할 수조차 없습니다. 그러나 팁을 가져 주셔서 감사합니다. 그게 일을하지 않는 이유일지도 모르겠지만, 이제 그 이유가 무엇인지 알아 내야 만합니다. 또한 메뉴를 다시 가져 오는 지 확인하기 위해 Maven 특성을 비활성화했습니다. 불운. –

+0

Eclipse Indigo, 그건 그렇고. –

+0

새 프로젝트를 만들고 "동적 웹 프로젝트"로 간주하면 "배포 어셈블리"옵션이 나타납니다. 하지만 현재 사용중인 SE 프로젝트의 경우 사용할 수있는 옵션이 없으며 사용할 수 있다고하더라도 사용할 수 있을지 확실하지 않습니다. –