0

我的Issue实体是从具有多个字段(id 等)的数据库表创建的。每个问题都有一个文章列表作为字段,这些文章存储在单独的数据库表中。文章有一个int issueID字段,用于将它们映射到适当的问题(表中没有对应的列issues):最终,当构造问题对象时,我将让它拉出所有 issueID 匹配的文章它的 ID,以便我可以返回包含问题数据的单个序列化对象以及表示其文章列表的 JSONArray。

不过,此时我只是在做一些测试——创建一些虚拟的 Article 对象并将它们添加到文章集合中。问题是,当我在 Issue 对象上测试 GET 请求时,返回的 JSONObject 仅包含存储在数据库中的字段(id 等)——没有 Article 集合的迹象。这是为什么?

我同样有兴趣知道您需要查看哪些其他代码来回答这个问题:我刚刚开始自学如何编写 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);
            }
4

2 回答 2

0

默认情况下,关系初始化是惰性的,因此当Issue加载对象时,articlesCollection除非使用,否则不会获取。

在您的情况下,情况似乎相同。

如果您不打算显式加载,请探索OpenEntityManagerInViewFilterarticlesCollection。当您的对象序列化时,articlesCollection如果您配置了OpenEntityManagerInViewFilter.

于 2013-04-23T05:32:08.820 回答
0

您的文章类是否也有@XmlType 或@XMLRootElement 标记?List<T>像jaxb这样的任何泛型类都期望T@XMLTypeor注释@XMLRootElelemt

于 2013-04-23T06:03:30.213 回答