Java Gson with Hibernate-尝试加载惰性属性时出错

Java Gson with Hibernate-尝试加载惰性属性时出错,java,json,hibernate,gson,Java,Json,Hibernate,Gson,我有一个实现如下的类: public class User implements Serializable { @Id @Column(name = "USER_ID") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "USER_LOG") private String log; @Column(name = "USER_PASSWORD") private Stri

我有一个实现如下的类:

public class User implements Serializable  {

@Id
@Column(name = "USER_ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "USER_LOG")
private String log;

@Column(name = "USER_PASSWORD")
private String password;

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "CATG_USER_FK",
        foreignKey = @ForeignKey(name = "CATG_TOUSERFK_FK")
)
private List<Category> categories;
然后是错误:

Exception in thread "main" java.lang.StackOverflowError
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:445)
    at java.lang.StringBuffer.append(StringBuffer.java:270)
    at java.io.StringWriter.write(StringWriter.java:101)
    at com.google.gson.stream.JsonWriter.string(JsonWriter.java:566)
    at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:402)
    at com.google.gson.stream.JsonWriter.value(JsonWriter.java:527)
    at com.google.gson.internal.bind.TypeAdapters$11.write(TypeAdapters.java:310)
    at com.google.gson.internal.bind.TypeAdapters$11.write(TypeAdapters.java:295)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:125)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:243)
    at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:976)
这个错误一次又一次地重复。 如果我尝试用代码加载的列表加载假用户(我的意思是,如果我在没有Hibernate干预的情况下通过代码创建用户对象),Gson工作得很好

请帮点忙好吗?从Hibernate加载是可以的,但是Lazy似乎不适合Gson。Hibernate会话始终处于打开状态。我希望避免在用户中使用fetch=FetchType.EAGER,如果我尝试使用此选项,它仍然会以相同的方式崩溃

多谢各位

-----编辑------
也许Hibernate在这里没什么问题。我尝试为用户创建一个大的类别列表,错误也是一样的。Gson中列表元素的数量或该元素的类型是否有任何限制?

类别是否对用户有引用?如果是的话,这很明显

gson使用reflection将其转到类别并从类别返回给同一用户

要在序列化过程中忽略适当性,可以使用

@Expose(serialize = false, deserialize = false)

类别不引用用户,但Caregory确实可以引用其他类别。那么,如何配置Gson以避免复发?谢谢你,巴顿。不管怎样,我在哪里读到过关于Gson的报道,这是一个不好的主意,也许这是一个更好的选择。你同意吗?杰克逊肯定更受欢迎我会和杰克逊一起去你可能会在网上找到一些比较;)就是这样。非常感谢。
@Expose(serialize = false, deserialize = false)