java - 使用 findAll() Spring JPA PostgreSQL 时出现无限循环

标签 java spring hibernate postgresql jpa

这是我的实体:

@Entity
@Table(name = "remind")

public class Remind {

@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private long id;

@Column(name = "title", nullable = false, length = 50)
private String title;

@Column(name = "remind_date", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date remindDate;


public Remind() {
}

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public Date getRemindDate() {
    return remindDate;
}

public void setRemindDate(Date remindDate) {
    this.remindDate = remindDate;
}

 //---Dependency---->

@OneToOne(optional = false)
@JoinColumn(name="id_user", unique = true, nullable = true, updatable = false)
private Users user;

public void setUser(Users user) {
    this.user = user;
}

public Users getUser() {
    return user;
}



}

这是另一个实体:

@Entity
@Table(name = "users")

public class Users {

@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
private long id;

@Column(name = "name", nullable = false, length = 50)
private String name;

public Users() {
}

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String title) {
    this.name = name;
}



 //---Dependency---->

@OneToOne(optional = false, mappedBy="user")
public Remind remind;

public Remind getRemind() {
    return remind;
}

public void setRemind(Remind remind) {
    this.remind = remind;
}

这是 Idea 向我展示的图表: diagram of db

但是当我在 RemindController.class 中使用时:

@RequestMapping(value = "/get", method = RequestMethod.GET)
@ResponseBody
public List<Remind> getReminder() {
    List<Remind> list = remindRepository.findAll();
    return list;
}

我有这个结果...无限循环:

enter image description here

我做错了什么?看来图还可以啊请帮助我(

最佳答案

这不是jpa问题。将实体序列化为 json 时出现问题。您需要显式地将关系标记为双向,以便序列化器可以跳过一端。

对于 Spring,我假设您使用的是 jackson。

查看 this 的答案问题。

关于java - 使用 findAll() Spring JPA PostgreSQL 时出现无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35969652/

相关文章:

java - JPA2 JoinColumns JoinColumn 名称不受尊重。 (Hibernate 3.6 和 H2)

java - 如何让 Ant 在 javac 中使用 JAXB 2.2.x 而不是 Java 6 SE JAXB 类?

java - 如何对角度值进行低通滤波

spring - Autowiring 请求范围 bean 的方法

java - 升级到 springframework.scheduling.concurrent?

java - Spring 3.0中如何处理比平时花费更多时间的搜索任务

java - 通过休息传输大量数据

java - 是否有任何 JAX-RS 实现解析路径段特定参数和值?

java - 如何在java中通过Streamtokenizer读取以0开头的数字

java - 从 Spring Boot 运行时出现 AWSLambdaException 和 InvalidSignatureException