2017-03-06 36 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

您仍然需要一張表來存儲父母的孩子,因爲您在父類中使用了一個集合。

您可以在Parent類中的Child集合上使用@Embeddable註釋對Child類和@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

啊。但是這仍然會給我留下一張「兒童」物品的表格,對吧? –

+0

是的,你是對的。 –