Java 查询HQL查询结果时发生PersistentBag.toString()堆栈溢出错误

Java 查询HQL查询结果时发生PersistentBag.toString()堆栈溢出错误,java,hibernate,jpa,hql,Java,Hibernate,Jpa,Hql,我是Hibernate的初学者,并试图实现一个HQL查询 Query q= em.createQuery("select p from Person p join p.company c"); List<Person> l = q.getResultList(); System.out.println(l.get(0)); 公司 getters and setters @Override public Strin

我是
Hibernate
的初学者,并试图实现一个
HQL
查询

Query q= em.createQuery("select p from Person p join p.company c");
        List<Person> l = q.getResultList();
        System.out.println(l.get(0));
公司

 getters and setters


        @Override
        public String toString() {
            return "Company [id=" + id + ", name=" + name + ", persons=" + persons + "]";
        }
有人能帮忙吗。

Person#toString
呼叫
公司#toString
公司#toString
再次呼叫
Person#toString
时,你正面临着这个问题

因此,当Person#toString将其称为下面的toString定义时发生了什么:

    @Override
public String toString() {
    return "Person [id=" + id + ", name=" + name + ", company=" + company + "]";
}

现在你可以看到你已经污染了公司,这意味着你的返回语句实际上变成了
“Person[id=“+id+”,name=“+name+”,company=“+company.toString()+””。因此,它调用了Company#toString(),现在看一下
Company#toString()
的实现,它包含
persons
对象的字符串连接。它再次调用
Person#toString()
,并且它仍然在运行,方法堆栈溢出。

Person类中的
persons
类型是什么?键入错误,更正了它
 getters and setters


        @Override
        public String toString() {
            return "Company [id=" + id + ", name=" + name + ", persons=" + persons + "]";
        }
    @Override
public String toString() {
    return "Person [id=" + id + ", name=" + name + ", company=" + company + "]";
}