有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    正如在另一个答案中提到的,我认为你会发现你的问题与x-to-x关系有关。当试图jsonify实体bean时,这有时会产生循环引用问题

    有时,您可以通过使用注释来避免或克服这种情况,有时则需要一个包装器类。我通常只编写一个包装器类来处理JSON事务

    这类问题涉及多种语言,有很多参考文献。这里有几个起点供你研究