FlexJSON を使用して JPA/Hibernate エンティティをシリアル化しようとすると、非常に奇妙なエラーが発生します。オブジェクト自体は派手なものではありません。フィールドと他のオブジェクト間の関係だけです。
Caused by: flexjson.JSONException: Error trying to deepSerialize
at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:61)
at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:49)
at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:49)
at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:49)
at flexjson.transformer.TransformerWrapper.transform(TransformerWrapper.java:22)
at flexjson.JSONContext.transform(JSONContext.java:73)
at flexjson.JSONSerializer.serialize(JSONSerializer.java:377)
at flexjson.JSONSerializer.serialize(JSONSerializer.java:235)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at flexjson.BeanProperty.getValue(BeanProperty.java:102)
at flexjson.transformer.ObjectTransformer.transform(ObjectTransformer.java:37)
... 89 more
Caused by: java.lang.IllegalStateException: Cannot call isReadOnlyBeforeAttachedToSession when isReadOnlySettingAvailable == true
at org.hibernate.proxy.AbstractLazyInitializer.isReadOnlyBeforeAttachedToSession(AbstractLazyInitializer.java:308
他の(まばらな)投稿を読んでコードを見ると、これは遅延初期化の問題のようです。これは非常に少数のケースで繰り返し発生しますが、これらのケースは再現可能です。私の推測では、ステートフルなように見えるので、データに関係していますが、特に非常にまれであるため、データがこの種の例外を引き起こす理由が本当にわかりません。