2017-03-06 1 views
0

나는 부모 엔터티과 같이 있습니다스토어 종속 JPA 엔티티 JSON과 같은 열이

@Entity 
public class Parent implements Serializable { 
    @Id 
    private String id; 

    @Convert(converter = ChildConverter.class) 
    private Collection<Child> children; 
    ... 
} 

그리고 자식 엔터티과 같이 정의된다 :

@Entity 
public class Child implements Serializable { 
    @Id 
    private String id; 
    ... 
} 

그러나, 내 Child을 원하는 엔티티가 이되도록 자체 테이블에 저장하지 않고 Parent 테이블의 (JSON) 열로 저장합니다. 그 이유는 Child 엔티티에 데이터가 거의 들어 있지 않아서 자체 테이블을 보증하지 않는 것 같은 느낌이 들기 때문입니다. 이것이 JPA에 가능한가?

업데이트 : 결국

, 나는 단순히 @Entity으로 Child 클래스에 주석을하지하기로 결정했습니다. 하지만 이것이 가져 오는 문제는 JPA의 도움없이 엔티티 제약을 시행해야한다는 것입니다.

+0

컬렉션이 엔티티의 것이라면 관계가되어야하며, 따라서 '@ OneToMany' /'@ ManyToMany'가 필요합니다. 요소 유형이 엔티티 (예 : 문자열, 날짜 등)가 아닌 경우에만 AttributeConverter를 사용할 수 있습니다. –

답변

0

부모 클래스의 컬렉션을 사용하기 때문에 여전히 부모의 자식을 저장하는 테이블이 필요합니다.

Child 클래스에서는 @Embeddable 주석을 사용하고 Parent 클래스의 children Collection에서는 @ElementCollection 및 @CollectionTable을 사용할 수 있습니다.

@Embeddable 
public class Child implements Serializable { 
    @Id 
    private String id; 
    ... 
} 
@Entity 
public class Parent implements Serializable { 
    @Id 
    private String id; 

    @Convert(converter = ChildConverter.class) 
    @ElementCollection 
    @CollectionTable(
     name="CHILD", 
     [email protected](name="PARENT_ID") 
    private Collection<Child> children; 
    ... 
} 
+0

Ah. 그러나 그것은 여전히'Child' 객체를위한 테이블을 가지고있을 것입니다, 그렇죠? –

+0

네, 맞습니다. –