Spring Boot 尝试从数据库提取对象时出现StackOverflowError

h43kikqp  于 2022-12-04  发布在  Spring
关注(0)|答案(1)|浏览(151)

这是我的实体类

@Entity
@Data
@Table(name = "wishlist")
public class Wishlist {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @OneToOne(targetEntity = Customer.class, fetch = FetchType.EAGER)
    @JoinColumn(nullable = false,name = "customer_id")
    private Customer customer;

    @Column(name = "created_date")
    private Date createdDate;

    @ManyToOne
    @JoinColumn(name = "product_id")
    private Products product;

    public Wishlist(Customer customer, Products product) {
        this.customer = customer;
        this.createdDate = new Date();
        this.product = product;
    }
    
    public Wishlist() {
        
    }
}

这是我的存储库

public interface WishlistRepository extends JpaRepository<Wishlist, Integer> {
    List<Wishlist> findAllByCustomerIdOrderByCreatedDateDesc(Integer customerId);
    Optional<Wishlist> findByProductId(Integer productId);
}

这是我的服务图层

@Service
@Transactional
public class WishlistServiceImpl implements WishlistService{

    @Autowired
    WishlistRepository wishlistRepo;

    @Override
    public void createWishlist(Wishlist wishlist,Integer productId) throws ProductNotExistsException {
        Optional<Wishlist> optionalProduct = wishlistRepo.findByProductId(productId);
        System.out.println(optionalProduct)
    }
}

因此,我试图检查该产品是否出现在我的愿望清单或没有使用产品ID。
但得到的错误:

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.StackOverflowError] with root cause

java.lang.StackOverflowError: null
    at java.base/java.lang.AbstractStringBuilder.putStringAt(AbstractStringBuilder.java:1720) ~[na:na]
    at java.base/java.lang.AbstractStringBuilder.putStringAt(AbstractStringBuilder.java:1724) ~[na:na]
    at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:583) ~[na:na]
    at java.base/java.lang.StringBuilder.append(StringBuilder.java:175) ~[na:na]
    at java.base/java.lang.StringBuilder.append(StringBuilder.java:87) ~[na:na]
    at java.base/java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:112) ~[na:na]
    at java.base/java.lang.StringBuilder.<init>(StringBuilder.java:127) ~[na:na]
    at com.ecommerce.entity.Customer.toString(Customer.java:29) ~[classes/:na]

那么如何解决这个问题呢?

kd3sttzy

kd3sttzy1#

可能是循环依赖性的问题。
尝试添加以下注解:

@ToString.Exclude

或者尝试覆盖toString实现。

相关问题