【发布时间】:2015-09-02 11:59:55
【问题描述】:
我有两个实体:Order 和 Item 在 OneToMany 关系中。 Item属于一个Order,而Order有一组Item。
class Order{
@OneToMany(fetch = FetchType.EAGER, mappedBy = "id_order")
Set<Item> items;
}
class Item{
@ManyToOne(targetEntity = Order.class, fetch = FetchType.LAZY)
@JoinColumn(name = "id_order")
Order id_order;
}
我使用gson 序列化Orders 并将它们发送到另一台机器,但由于订单和项目相互引用,因此在序列化过程中创建了一个循环。
我的目标是,当加载 Item 时,id_order 字段应为 null 或仅包含 id,以避免传播。 hibernate 支持这个功能吗?或者我可以在序列化期间排除该字段吗?
我已经在Item 上尝试了FetchType.LAZY 并在onLoad() Interceptor 中捕获Item 并将其id_order 设置为null。但它没有用。我试图避免编写自定义适配器或在每次查询时手动解析所有订单中的所有项目。
【问题讨论】: