java Spring Rest服务prodouces JSON,但不适用于使用db映射的对象
我花了几个小时才意识到问题是什么:
我有一个springrest服务和一个GET方法,它以JSON格式返回用户。 数据来自sessionFactory上的数据库
调试后发现,问题与我的双向一对一多对一关系有关
这么叫
User user = (User) sessionFactory.getCurrentSession().load(User.class, userId);
返回用户所在的用户对象。getCity()。getSupplier()运行到com中。太阳jdi。调用异常。因此,Jackson显然无法序列化。 但是什么导致了这种例外
@Entity
@Table(name = "T_CITY")
public class City implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private long id;
@OneToMany(mappedBy = "city", cascade=CascadeType.ALL)
private Set<User> user;
@OneToMany(mappedBy = "city", cascade=CascadeType.ALL)
private Set<Supplier> supplier;
用户:
@Entity
@Table(name = "T_USER")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
public User() {
}
@Id
private long id;
@ManyToOne
private City city;
供应商:
@Entity
@Table(name = "T_SUPPLIER")
public class Supplier implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private long id;
@ManyToOne
private City city;
# 1 楼答案
正如在另一个答案中提到的,我认为你会发现你的问题与x-to-x关系有关。当试图jsonify实体bean时,这有时会产生循环引用问题
有时,您可以通过使用注释来避免或克服这种情况,有时则需要一个包装器类。我通常只编写一个包装器类来处理JSON事务
这类问题涉及多种语言,有很多参考文献。这里有几个起点供你研究