2013-04-23 58 views
0

我的Issue實體是從具有多個字段(id等)的數據庫表創建的。每個問題都有一個文章列表作爲字段存儲在單獨的數據庫表中。文章有一個int issueID字段,用於將它們映射到相應的問題(issues表中沒有對應的列):最終,在構建問題對象時,我將要求它將所有文章issueID與其ID相匹配,以便我可以返回包含問題數據的單個序列化對象以及表示其文章列表的JSONArray。爲什麼這個字段沒有被序列化?

但是,在這一點上,我只是在做一些測試 - 創建一些虛擬的Article對象並將它們添加到文章集合中。問題是,當我在Issue對象上測試GET請求時,返回的JSONObject僅包含存儲在數據庫中的字段(id等) - 沒有文章集合的符號。這是爲什麼?

我同樣有興趣知道您需要查看哪些其他代碼才能回答此問題:我剛開始自學如何編寫Web服務,並且仍處於圍繞廣泛概念的階段,因此找出哪些運動部件影響哪些行爲 - 以及哪些地方需要哪些註釋 - 最終是我想要做的。

既然如此,那麼更廣泛的建議是受歡迎的。

@Entity 
@Table(name = "issues") 
@XmlRootElement 
public class Issue implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @Basic(optional = false) 
    @NotNull 
    @Column(name = "id") 
    private Integer id; 
    ....//other fields 
    @OneToMany(mappedBy = "issueID") 
    private Collection<Articles> articlesCollection; 

    public Issue() { 
    articlesCollection = new ArrayList<Articles>(); 
    Articles a = new Articles(); 
    a.setHeadline("butt cheese"); 
    articlesCollection.add(a); 
    Articles b = new Articles();   
    articlesCollection.add(b); 
    Articles c = new Articles();   
    articlesCollection.add(c); 
      } 
+0

是階級'Articles'序列化? – alfasin 2013-04-23 05:29:47

回答

0

缺省情況下的關係初始化是懶所以當Issue對象加載除非所使用的articlesCollection不被取。

在你的情況似乎是相同的情況。

探索OpenEntityManagerInViewFilter如果您不打算明確加載articlesCollection。當您的對象序列化時,如果已配置OpenEntityManagerInViewFilter,則將加載articlesCollection

+0

嗯,但我不是「使用它」通過實例化和添加文章?還是「使用它」必須從DB反序列化它?另外 - 我會怎麼去明確加載'articlesCollection' - 通過執行查詢從數據庫反序列化它? – drewmoore 2013-04-23 05:36:35

+0

不確定那個構造函數,但是你檢查了它是否被執行並且articlesCollection被加載。還有你對問題對象的做法,即它如何被序列化? – 2013-04-23 05:41:14

0

您的文章類是否也有@XmlType或@XMLRootElement標記?像List<T> JAXB Onany泛型類預計T標註有@XMLType@XMLRootElelemt

相關問題