2012-05-24 6 views
3

일식에서 엔티티에서 MySQL 데이터베이스 (아직 학습)까지 JPA 테이블을 만든 작업 프로젝트가있었습니다. 불행하게도 나는 '테스트'와 '프로덕션'데이터베이스가 있기를 원했기 때문에 잘못된 데이터베이스에 테이블을 만들었습니다. 어떻게 든 그것은 '프로덕션'db에 대한 세부 정보를 얻었습니다. 심지어 선택한 데이터베이스 연결이 테스트 용이었던 것처럼 보입니다. 프로젝트에 약간의 조작을 가하고 특정 (테스트)를 위해 올바른 연결 개체로 연결되도록 만들었습니다. 이클립스 (db)에 db를 핑 (ping)하고 데이터 소스 탐색기에서 db를 볼 수 있습니다. 하지만 지금은 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 'JPA'도구 '>'엔티티에서 테이블 생성 '을 선택하여 테이블을 생성 할 수 없습니다. 모든 것이 작동하는 것처럼 오류없이 생성이 시작되고 완료되지만 어느 데이터베이스에도 테이블이 표시되지 않습니다. (이클립스 데이터베이스 탐색기 또는 명령 줄에서). persistence.xml은 전에 한 테이블을 이미 생성 했으므로 잘되어야합니다.이클립스에서 jpa 테이블을 만들 수 없습니다.

Entity 주석 "Table xxx can not be resolved"에 대한 유일한 오류는 Entity 클래스에 대한 것입니다. 그리고 내가 알기 론, 그것은 테이블에서 생겨나지 않습니다.

다음은 persistence.xml입니다. http://pastebin.com/djPZei90

프로젝트는 Maven 프로젝트이기도하며 SVN을 사용합니다. 의존성은 Eclipse/프로젝트를 위해 maven에 의해 성공적으로로드되었고 SVN에는 아무런 합병증도 없습니다.

Maven 때문에 생산 및 테스트 용으로 persistence.xml 파일 2 개 (로그인 자격 증명과 데이터베이스 이름 변경) 만 있습니다. db 연결이 검사되어 첫 번째 위치에서 잘못된 파일에서로드 된 것일 수 있습니다. (just guessing)

또한 테이블을 생성 할 때 script.sql을 만들려고했습니다. 파일을 찾았지만 완전히 비어있었습니다.

어쨌든 어디서나 테이블을 만들 수없는 문제가 있습니다. 나는 이것으로 완전히 의아해한다. 이 문제를 해결해야 할 힌트가 있습니까?

+0

너무 많은 일반 텍스트. 읽지 않았어. – JMelnik

+1

관계가있을 수는 없지만 persistence.xml은 eclipseLink 제공자 DDL gen 특성을 표시하지만 Hibernate를 jpa 제공자로 지정합니다. 런타임 DDL 생성을 사용하려면 공급자를 org.eclipse.persistence.jpa.PersistenceProvider로 전환하거나 대신 Hibernate 설정을 지정해야합니다. Dali가 실제로이 테이블을 만드는 데 사용한다는 것을 모르기 때문에 그냥 의견을 말하십시오. – Chris

+0

두 공급자 모두 시도했습니다. 변경 없음. –

답변

2

크리스는 첫 번째 읽기에서 올바르게 대답을 이해하지 못했지만 맞았습니다. 다른 공급자와 시도했지만 우연히 잘못된 파일을 수정했을 수 있습니다 (2 'persistence.xml 파일이 메이븐 프로젝트이므로). 또는 내가 찾지 못한 다른 이유가있을 수 있습니다. 이전에 힌트를 받았는데, 주어진 공급자 (persitence.xml에서)를 사용해야합니다. 나는 결국 그것에 너무 많은주의를 기울이지 않았다. 은 EclipseLink를 사용하기 때문에, 공급자가 참이어야합니다 :

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

다시 한번 감사 크리스, 내가 첫 번째 시도에서 실패하고이 문제를 해결에 몇 시간 이상을 지출했다도있다.

+0

나는 그 대답이 JMelnik이 아니라 Chris에 의한 것이라고 나중에 주목했다. JMelnik은 엉덩이이기 때문에 잘못된 크레딧 때문에 Chris에게 사과드립니다. –

0

하루 종일 보내십시오.

Eclipse (Indigo btw)에서 완전히 새로운 (JPA) 프로젝트를 만들었습니다. 또한 새 데이터베이스 (mysql)를 만들었습니다.

Eclipse 용으로 연결했습니다. 파일> 새로 작성> 기타 ...> 연결 프로파일.

새로운 패키지 구조를 만들고 Eclipse에서 'persistence.xml'(src/META-INF/persistence.xml)을 만들도록합니다.

이클립스 마법사로 'JPA 엔티티'클래스를 만들었습니다.이전 프로젝트의 'pom.xml'을 새 프로젝트로 복사했습니다 (프로젝트 이름과 같이 사소한 변경이있었습니다).

이전 프로젝트의 'persistence.xml'파일 (src/main/java/META-INF /, 'test'는 포함되지 않음)도 복사됩니다. 지속성 파일에서 데이터베이스 세부 정보 및 로그인 자격 증명을 변경했습니다.

이클립스에서 프로젝트 'Maven 프로젝트'를 만들었습니다. (프로젝트 이름> 구성을 마우스 오른쪽 버튼으로 클릭하십시오.) 이제 Maven 프로젝트이므로 기본 'persistence.xml'이 잘못된 위치에서 제거 될 수 있습니다. (Mavenizing 프로젝트는 pom과 함께 존재하지 않는 병에서 모든 오류를 제거했습니다.xml)

프로젝트에 대한 테이블을 다시 만들려고했습니다 (같은 오류이지만 대기 ...).

는 오른쪽 프로젝트>

메이븐> 안 메이븐 자연

그런 다음 다시 그것을 받는다는 프로젝트를 만든 바로

다시 테이블을 만드는 시도 ... 프로젝트> 설정> 클릭을 클릭하고 그들을 만들었습니다. 모든 것이 작동합니다!

이동하십시오!

내가 의심하는 것처럼 모든 것이 괜찮 았던 것처럼 보입니다. 메이븐 (플러그인) + 일식에 버그가있는 것 같습니다.

이전 프로젝트에서 같은 트릭을 사용하는 것은 도움이되지 않습니다. 필자는 마법사를 사용하여 엔티티 클래스를 만들었습니다 (기존을 제거했습니다). < 클래스 > 선언은 'persistence.xml'에 추가되지만 여전히 테이블을 작성하지 않습니다. (또한 제거하고 자연을 다시 추가해보십시오)

나는 프로세스에서 뭔가를 놓칠 수/달리 다르게 또는 잘못 함께 할 수 있습니다. 그러나 다른 프로젝트가 작동하는 동안 다른 프로젝트는 작동하지 않는다고 생각하면 같은 트릭을 사용하여 큰 불쾌한 버그가있는 것으로 보입니다.

+0

여기 엔 엔티티 파일에 대한 링크가 추가되지 않습니다.이 튜토리얼에서 발견되는 파일과 비교할 수있는 특별한 내용은 없습니다. 그돈.xml은 환경에 따라 다를 수 있지만 다른 게시물에서도 복사되었습니다. 내가 찾은 팁을 토대로 내 자신을 약간 변경했습니다. 여기에 게시하면 누군가가 일종의 maven + jpa pom이 필요합니다. http://pastebin.com/5abmc2D2 –

+0

당신이 상상할 수있는 최고의 jpa + maven pom이 아니므로, 더 좋은 방법을 찾으십시오. 나는 또한 메이븐 놈입니다. :) 적어도 그것이 작동하고 settings.xml을 조정할 필요가 없습니다. 로컬 저장소 나 다른 곳에서 진부한 파일을 설치하십시오. –

+0

또한 pom.xml의 버전은 원본 소스에서 (대부분) 확인한대로 상당히 새 버전이어야합니다. 날짜는 2012 년 5 월 25 일입니다. –

1

문제를 해결해 주시겠습니까? 불행히도 나는 전혀 드문 문제를 발견하지 못했다. JPA 도구는 persistence.xml에 쓰기는하지만 매핑 클래스를 추가하지 않습니다.

지난 주 모든 것이 완벽하게 작동했지만 이제 모든 것이 f * *입니다. 나는 심지어 다른 작업 공간에서 새로운 독립적 인 프로젝트를 만들었지 만 동일한 버그가 발생합니다. 분명히 그것은 일식/플러그인 버그입니다. 그렇지 않으면 설명 할 수 없습니다. Eclipse 4.2.0으로 작업하기. 나는 행복하지 않다.

편집 : 달리 도구를 제거한 후 JPA 구성 프로그램, Seam 3 플러그인 작성 엔티티가 다시 작동하는 것 같습니다. 왜, 가장 가능성이있는 충돌인지는 모르지만, 1 개월 전이 아니라 지금 왜 그런지는 설명하지 못합니다. 나는 그때 이후로 내 일식 설치를 변경하지 않았다 ...

+0

잠깐 : 문제는 maven pom.xml에 잘못된 공급자가 있다는 것입니다. 겉보기에는 효과가 있었지만 언급 된 오류가 발생했습니다. 아래 내 대답을 수락했습니다. –

+0

답변 해 주셔서 감사합니다. 나는 한편으로 "해결책"을 찾았다 : - | (위의 편집 된 게시물 참조). 나는 여전히 만족스럽지 않지만 적어도 지금은 다시 작동합니다. – Malvin

+1

제 생각 엔 클래스 로딩과 관련이있을 것 같습니다. Dali- 및 Seam 플러그인이 있다고하셨습니다. JPA와 달리에 대한 구현이 모두 올바르지 않은 것으로 가정합니다. –

관련 문제