2014-10-21 71 views
0

假設我們有實體進入和EntryComment相關的多到一個如下圖所示休眠的Java序列化automized數據庫

 @Entity 
     @Table(name = "entry") 
     public class Entry { 
      @Column(name = "author") 
      private String author; 
      @Column(name = "content") 
      private String body; 
      @Column(name = "comment_count") 
      private long commentCount; 
      @OneToMany(mappedBy = "entry") 
      private List<EntryComment> comments; 
     } 
    @Entity 
    @Table(name = "entry_comment") 
    public class EntryComment{ 
     @Column(name = "vote_count") 
     private long voteCount; 
     @ManyToOne 
     @JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false) 
     private Entry entry; 
     @Column(name = "entry_id") 
     private long entryId; 
} 

兩個EntryEntryComments有編號的。所以,有這樣的情況,其中entryId = 3213,它的評論ID是id = 3214id = 42352。現在我收集EntryComments這樣:

Entry e = api.getEntryString(i); 
e = EntryService.save(e); 
for(int a = 0; a<e.getComments().size(); a++){ 
    EntryComment ec = EntryCommentService.save(e.getComments().get(a)); 
} 

這有可能在Hibernate中這樣評論序列直接從入口無「手動」遍歷集合?

+2

嘗試使用級聯 – Riadh 2014-10-21 22:29:25

回答

0

爲了避免迭代EntryComments集合,我必須使用@Cascade註釋。據this應該

 @Entity 
     @Table(name = "entry") 
     public class Entry { 
      @Column(name = "author") 
      private String author; 
      @Column(name = "content") 
      private String body; 
      @Column(name = "comment_count") 
      private long commentCount; 
      @OneToMany(mappedBy = "entry") 
      @Cascade(CascadeType.SAVE_UPDATE) 
      private List<EntryComment> comments; 
     } 

,然後就

Entry e = api.getEntryString(i); 
e = EntryService.save(e); 

感謝,Riadh的暗示!