2011-11-01 3 views
3

두 개의 다른 스키마에 Language라는 두 개의 테이블이 있으면 schema1과 schema2를 호출 할 수 있습니다. 나는이 테이블의 각 모델에 주석을 달 때두 개의 다른 스키마에서 동일한 이름의 두 테이블을 사용할 때 최대 절전 모드 예외 방지

, 내 코드는 다음과 같습니다 @Entity @Table (= "언어"이름, 카탈로그 = "SCHEMA1") 공용 클래스 언어 {

..................... 

@Entity 
@Table(name="language", catalog="schema2") 
public class Language { 

그러나이 작업을 수행 할 때 다음과 같이 나는 주석 예외 오류가 발생합니다 : 두 번 같은 개체 이름의 사용 : 언어 그래서

,이 m를 수행 org.hibernate.AnnotationException이

두 개의 서로 다른 데이터베이스 스키마에서 테이블을 동일하게 명명 할 수 없거나 모델에 잘못 주석을 달았습니까?

엘리엇 감사

+0

카탈로그 대신 테이블 주석의 스키마 특성을 사용하려고 했습니까? – svaor

답변

0

그것은 스키마 2의 모델은 최대 절전 모드 건축 할 때의이 종류를 좋아하지 않는 스키마 1의 모델 객체의 확장이었다 객체라고 판명 두 테이블의 이름이 같습니다. 두 번째 객체를 첫 번째 객체의 확장이 아닌 객체로 만들면 문제가 해결됩니다.

4

복잡한 클래스 구조에서 동일한 문제가 있었지만 위의 대답은 해결 방법 일뿐입니다. @Entity 주석을 name 변수로 정의하여 두 클래스를 서로 구별 할 수 있습니다. 예 :

클래스 1 :

@Entity(name="language_v1") 
@Table(name="language", catalog="schema1") 
public class Language { 

클래스 2 :

@Entity(name="language_v2") 
@Table(name="language", catalog="schema2") 
public class Language { 

이것은 당신의 계급 구조를 유지 할 수 있습니다.

관련 문제