【问题标题】:Stack overflow Exception on Hibernate MappingHibernate 映射的堆栈溢出异常
【发布时间】:2018-10-31 13:35:40
【问题描述】:
java.lang.StackOverflowError: null
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:708)

这是我在使用 Find Method 时遇到的异常。 我正在使用 Spring Boot JPA 存储库。

@Entity

@Table(name="存储") 公共类 StoreEntity {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long store_id;
private String storeDescription;
private String storeName;
private String lattitude;
private String longitude;
private boolean isActive;
private boolean is247;
private Date createdDate;
private Date lastModifiedBy;

@OneToMany(mappedBy = "store", cascade = CascadeType.ALL)
@JsonIgnoreProperties(value ="store", allowSetters=true)
private Set<GroceryItemEntity> groceryItem;

@Table(name ="杂货店") 公共类 GroceryItemEntity {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long grocery_id;

private String name;
private String description;

private double price;
private boolean isActive;
private Date  createdDate;  
private Date  lastModifiedBy;


@ManyToOne(cascade = CascadeType.ALL )
@JoinColumn(name = "store_id")
@JsonIgnoreProperties(value ="groceryItem", allowSetters=true)
private StoreEntity store;

部分例外

at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:708)
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)

【问题讨论】:

  • 很好的例外。现在它需要一个问题和一些代码才能成为有价值的帖子。
  • @TheHeadRush 请检查代码。
  • 哪种查找方法?
  • FindAll() 或 findOne(id) 的 jpa 存储库
  • 在尝试序列化时遇到无限递归问题 - 每个StoreEntity 都引用一组GroceryItemEntity 实例,反之亦然。 Jackson 提供了一组注释(@JsonIgnore@JsonIgnoreProperties@JsonManagedReference/@JsonBackReference)在各种用例中解决此问题。您只需要评估并找出最能满足您需求的一种。

标签: hibernate spring-boot jackson spring-data-jpa spring-rest


【解决方案1】:
@JsonIgnoreProperties(value ="groceryItem", allowSetters=true)

用于 All Mapping 解决无限递归问题。

实际上我改变了我的应用程序的结构。在 Endpoint 中使用 Vo 而不是 Entity Class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2016-02-19
    • 2012-05-28
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多