平时开发当中遇见的异常总结(持续记录)-创新互联
10年积累的网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有依安免费网站建设让你可以放心的选择与我们合作。>异常名称:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
异常原因:
1. JSONArray.fromObject(obj).toString()。可能是obj对象中存在Date时间类型,JSON对象把date认为是java.sql.Date。
2. 在封装对象时有可能hibernate级联到了别的对象,使用到了延迟加载而导致了这个问题。(以上问题均来源网络)
解决:我的问题后来调整了实现,并未解决上述问题。贴出,网络的解决办法:
日期格式:private java.util.Date createTime;
hibernate延时加载 设置:
JsonConfig cfg= new JsonConfig();
cfg.setExcludes(new String[] {"handler","hibernateLazyInitializer"});
异常名称:org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: com.tlj.pcxt.entity.admin.Unit
异常原因:
对象引用一个瞬时状态实例
解决:引发此异常的情况有多重(以下第一点解决办法则是我的问题,其余均来源网络)
1. this.getUserService().updateUser(user);(发生异常的地方)
此代码尝试更新一个前台传入的User对象,其中User对象有一个属性Unit(单位,为对象).
由于前台对象封装的时候出现问题,Unit对象获取为空。故更新的时候报错。
本来以为这种错误会抛出空异常,但是并未。所以让我纠结半天,原来是页面写错。
2. hibernate事物配置问题。(由于我并未遇见这个问题,则没机会去解决。网上的方法无法验证正确性,这里就不贴出来了)
异常名称:org.hibernate.HibernateException: cannot simultaneously fetch multiple bags
异常原因:
1. 由于持久层实时加载太多异同对象而致。
当持久框架抓取一方的对象时,同时加载多方的对象放进容器中,多方又可能与关联其它对象,Hibernate实现的JPA,默认高抓取深度含本身级为四级(它有个属性配置是0-3),若多方(第二级)存在重复值,则第三级中抓取的值就无法映射,按照这个道理,就应该报出无法同时加载多个包之异常。
解决:
1. 先看看自己是不是用了List集合而导致此问题的发生,若是用Set还出现此问题,则去看Set容器内的对象的类中是不是还有类似问题。@ManyToMany或@OneToMany的Many方此时一定用Set容器来存放,而不能用List集合。
网页题目:平时开发当中遇见的异常总结(持续记录)-创新互联
分享URL:http://scyanting.com/article/ecjje.html