Java Jersey Jackson JSON和Eclipselink JPA-如何在没有@JsonIgnore的情况下动态忽略所拥有实体的JSON属性?
所以我有一个数据库和一个充满JPA实体的库,我通常在Jersey Rest服务上阅读它们。当我尝试读取一个实体时,它递归地读取双向关系。我知道@JsonIgnore解决了这个问题,但数据库太大,无法手动遍历每个实体并将@JsonIgnore添加到所有者实体的每个字段中 客户:Java Jersey Jackson JSON和Eclipselink JPA-如何在没有@JsonIgnore的情况下动态忽略所拥有实体的JSON属性?,java,json,jpa,jackson,eclipselink,Java,Json,Jpa,Jackson,Eclipselink,所以我有一个数据库和一个充满JPA实体的库,我通常在Jersey Rest服务上阅读它们。当我尝试读取一个实体时,它递归地读取双向关系。我知道@JsonIgnore解决了这个问题,但数据库太大,无法手动遍历每个实体并将@JsonIgnore添加到所有者实体的每个字段中 客户: @Entity public class Customer implements DomainObject{ private static final long serialVersionUID = 254338
@Entity
public class Customer implements DomainObject{
private static final long serialVersionUID = 2543387766776209353L;
@Id
private long id;
private String firstName;
private String lastName;
@OneToOne(fetch = FetchType.LAZY, mappedBy="customer",cascade={CascadeType.ALL})
private Address address;
...Getters and Setters...
}
地址:
@Entity
public class Address implements DomainObject {
private static final long serialVersionUID = 2543387766776209353L;
@Id
private long id;
private String city;
private String street;
@PrimaryKeyJoinColumn
@OneToOne(fetch = FetchType.LAZY)
private Customer customer;
...Getters and Setters...
}
基本上,如果可能的话,我想忽略在地址的Json中发送客户而不使用@JsonIgnore。如果不是,还有另一种JSON构建技术可以用来生成JSONs,它遵循所有者和MaPdBube字段的JPA标记吗?< P>也许您可以考虑为REST服务响应创建不同的对象,如模式中所描述的。 这将需要您编写更多的代码,但会让您对服务的响应有更多的控制,甚至允许您在需要时添加聚合,以避免不必要的从客户端到toy服务的往返,如Wikipedia文章中所述 详细介绍DTO