JAXB,关系的自定义编组

时间:2016-09-28 09:20:30

标签: java xml hibernate jaxb

我有一个API,允许第三方通过代表我的java域的XML文件与我的数据库进行交互。

我使用JAXB定义xsd以及我的POJO和XML之间的marshal / un-marshal。

我面临的问题是如何支持等效的hibernate延迟加载。即,仅在特定条件下递归地编组对象。我想到的条件就像RequestFactory使用的那样是一个.with(...),用户可以准确指定要返回的对象图的哪一部分。

考虑一个" Person"有一个"图像"在另一张桌子里。使用API​​并请求" Person"我希望能够指定.with(图像)或等效的东西,否则每个用例都会受到惩罚,必须携带这个图像
(a)不是必需的
(b)有不必要的数据库。
我有100多个表格,排列过于复杂,无法编写专门的POJO代码。

如何使用JAXB或任何其他免费库满足上述要求。

1 个答案:

答案 0 :(得分:0)

一种可能的简单解决方案(假设您使用带有JAXB注释的JPA实体,但与简单的POJO一起使用):

  • 使用一些复制方法丰富每个实体 - 即' copyForExport'
  • 此方法创建实体的非托管副本,而不包含导出
  • 的值
  • 编组副本

示例:

@Entity
@XmlType
@XmlRootElement
@XmlAccessorType(value = XmlAccessType.FIELD)
public class SampleEntity {
    @Id private long id;
    @Column private String meaningful;
    @Column private String something1;
    @OneToMany private List<Something> something2;

    SampleEntity copyForExport() {
        SampleEntity copy = new SampleEntity();
        copy.id = id;
        copy.meaningful = meaningful;
        return copy;
    }
}