2010-03-17 2 views
2

열 이름 중복 :JPA : @ElementCollection 및 InheritanceType.TABLE_PER_CLASS -> 나는 다음과 같은 시나리오를 만든

@javax.persistence.Entity 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
public class MyEntity implements Serializable{ 
    @Id 
    @GeneratedValue 
    protected Long id; 
    ... 
    @ElementCollection 
    @CollectionTable(name="ENTITY_PARAMS") 
    @MapKeyColumn (name = "ENTITY_KEY") 
    @Column(name = "ENTITY_VALUE") 
    protected Map<String, String> parameters; 
    ... 
} 

뿐만 아니라 :

@javax.persistence.Entity 
public class Sensor extends MyEntity{ 
    @Id 
    @GeneratedValue 
    protected Long id; 
    ... 

    // so here "protected Map<String, String> parameters;" is inherited !!!! 
    ... 
} 

그래서이 예제를 실행을, 어떤 테이블이 없습니다 생성 및 나는 다음과 같은 메시지가 나타납니다 :

WARNUNG: Got SQLException executing statement "CREATE TABLE ENTITY_PARAMS (Entity_ID BIGINT NOT NULL, ENTITY_VALUE VARCHAR(255), ENTITY_KEY VARCHAR(255), Sensor_ID BIGINT NOT NULL, ENTITY_VALUE VARCHAR(255))": com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Duplicate column name 'ENTITY_VALUE' 

나는 또한 Sens 또는 클래스 ...

@AttributeOverrides({ 
    @AttributeOverride(name = "ENTITY_KEY", column = @Column(name = "SENSOR_KEY")), 
    @AttributeOverride(name = "ENTITY_VALUE", column = @Column(name = "SENSOR_VALUE")) 
}) 

...하지만 같은 오류.

편집 :

좋아, 나뿐만 아니라와 마찬가지로 "JOINED"상속 전략을 "SINGLE_TABLE"모든 것이 잘 작동 것을 찾았다. 또한 EclipseLink 버전과 관련이없는 것 같습니다. 1.3 및 2.0.1을 시도했습니다.

END_EDIT

누군가가 나를 도울 수 있습니까?

답변

6

오케이, 나는 무엇이 잘못되었는지 알아 냈습니다! 난 당신이 @CollectionTable (이름 = "ENTITY_PARAMS") 주석을 사용하지 수 있어야 내장했던 이러한 시나리오에서

. 다만 사용하여 그래서

, ... @ElementCollection @MapKeyColumn (이름 = "PARAM_KEY") @Column (이름 = "PARAM_VALUE") 개인지도 매개 변수;

모든 잘 작동하고, (MySQL은) 결과 테이블은 다음과 같습니다

CREATE TABLE Sensor_PARAMETERS (
    Sensor_ID BIGINT NOT NULL, 
    PARAM_VALUE VARCHAR(255), 
    PARAM_KEY VARCHAR(255) 
) 

하고 그래서

CREATE TABLE Entity_PARAMETERS (
    Entity_ID BIGINT NOT NULL, 
    PARAM_VALUE VARCHAR(255), 
    PARAM_KEY VARCHAR(255) 
) 

을, 모든 것이 잘 작동 속성없이 .... 희망, 아무도 요구 이 게시물. "축하해, 그 대답을 찾았 어!" ;-)

관련 문제