今天在做修改数据的时候报了一个net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'delegate' has no getter method 错误,一开始以为是getter和setter的错误,其实不然。
我们使用json-lib包来用json转换hibernate持久化对象时候需要注意:如果持久化对象采用了延迟加载,或者持久化对象和另一持久化对象循环引用的时候会出现此类错误
我写的load函数中是有关于级联查询的,在配置hibernate时没有写lazy属性,代码如下
- <many-to-one name= "astCommon" class = "com.kingee.ast.assetManager.pojo.AstCommon" column= "assetID" ></many-to-one>
- <many-to-one name="depart" class = "com.kingee.ast.system.pojo.AstSysDepartOrg" column= "deptID" ></many-to-one>
因为没有运用延迟加载,所以会循环读取astcommon和depart表中的数据,所以报错...
将hibernate配置文件改成
- <many-to-one name= "astCommon" class = "com.kingee.ast.assetManager.pojo.AstCommon" column= "assetID" lazy= "false" ></many-to-one>
- <many-to-one name="depart" class = "com.kingee.ast.system.pojo.AstSysDepartOrg" column= "deptID" lazy= "false" ></many-to-one>
后,运行正常,解决问题了...