hibernate 查询报错 Exception in thread “main“ java.lang.StackOverflowError

问题原因:

级联查询循环应用了toString方法

解决方法:

删除其中一方的toString方法,或者将其中一方toString方法循环引用的属性去掉

实体类 orders

package com.picc.hibernate.entity;
​
import lombok.Getter;
import lombok.Setter;
​
@Getter
@Setter
public class Orders {
private Integer id;
private String name;
private Customer customer;
​
    @Override
    public String toString() {
        return "Orders{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", customer=" + customer +
                '}';
    }
}

实体类 Customer

package com.picc.hibernate.entity;
​
import lombok.Getter;
import lombok.Setter;
​
import java.util.Set;
​
@Setter
@Getter
public class Customer {
private Integer id;
private String name;
private Set<Orders> orders;
​
    @Override
    public String toString() {
        return "Customer{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", orders=" + orders +
                '}';
    }
}

查询操作

package com.picc.hibernate.test;
​
​
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import java.util.List;
​
​
public class TestHql1 {
    public static void main(String[] args) {
        //创建 Configuration
        Configuration configuration = new
                Configuration().configure();
        //获取 SessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //获取 Session
        Session session = sessionFactory.openSession();
​
        String hql = "from Customer";
        Query query = session.createQuery(hql);
        List list = query.list();
        for (Object customer : list) {
            System.out.println(customer);
        }
​
        session.beginTransaction().commit();
        session.close();
    }
}

报错内容

Exception in thread "main" java.lang.StackOverflowError at java.util.HashMap$KeyIterator.<init>(HashMap.java:1467) at java.util.HashMap$KeySet.iterator(HashMap.java:917) at java.util.HashSet.iterator(HashSet.java:173) .....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值