2016-09-30 3 views
0

질문 : 데이터베이스에서 하나의 열에 만 내 Entity 클래스의 두 필드를 매핑 할 수 있습니까?두 개의 필드를 하나의 데이터베이스 열에 매핑하십시오.

시나리오 : 데이터베이스가 완전히 정규화되지 않았습니다. 복합 정보를 포함하는 하나의 열이 있습니다. 제 실제 사용 사례는 아니지만 이해할 수있는 예제는 비행기의 한 점에 대한 X 좌표와 Y 좌표 일 수 있습니다. 따라서 데이터베이스에는 문자열 12:45이 포함될 수 있으며 Entity 클래스에는 너비 값 12y의 값이 45 인 두 개의 정수 필드 x 만 포함되어야합니다.

현재 Entity 클래스에는 x 및 y에 대한 두 개의 getter 및 setter가 추가로 있으며 적절한 변환을 수행합니다. 그러나 JPA가 백그라운드에서 나를 위해 마술처럼 이것을 할 수있는 방법이 있는지 궁금합니다.

저는 이미 맞춤형 변환기 클래스로 작업하고 있습니다. 열거 형과 데이터베이스 열 사이의 적절한 매핑이 필요하지만 이는 Entity 클래스의 필드와 데이터베이스의 열 사이의 "일대일"매핑에만 적용됩니다.

물론 데이터베이스에서 테이블을 다시 디자인하는 것이 가장 바람직하지만 현재로서는 옵션이 아닙니다.

공급 업체별 솔루션도 좋습니다.

+0

들어 본 적이 없지만 무엇을 알 수 있습니까? 저는 John Snow입니다. – Antoniossss

답변

1

하나 개의 데이터베이스 컬럼에 2 개 엔티티 필드는 단순히 JPA는 변환을 처리하기 위해 개체에 접근을 사용하여 지정하여 공정하게 수행 할 수 있습니다

@Entity 
@Access(AccessType.FIELD) 
class myEntity { 
@Id 
int id; 
@Transient 
String x; 
@Transient 
String y; 

@Mutable //EclipseLink specific to prevent change tracking issues 
@Access(AccessType.PROPERTY) 
@Column(name="yourDatabaseFieldName") 
private String getCoords() { 
return x+":"+y; 
} 
private void setCoords(String coords) { 
    //parse the string and set x+y. 
} 

는 EclipseLink와 Hibernate는 반대를 처리 할 수있는 변환 매핑을 ; 2 개 이상의 데이터베이스 필드를 하나의 Java 등록 정보로하지만 JPA 외부에 있습니다.

관련 문제