一些数据库相关Exception的解决方法:
1.Could not locate gettermethod for property......
原因:一些属性的get、set方法的名字(大小写)与字段不对应,或者与数据库字段不对应。
boolean类的get方法,若字段名前两个字母为is,则自动生成的get方法与字段名相同,也会出此错误。
2.mysql workbench可连上服务器的数据库,在首页的MySQL Connection旁边点+添加即可
3.Date和Long类型转换
Date date = newDate() //当前时间
Long timestamp = date.getTime();//转换成long
4.数据库中间件的使用
5.org.hibernate.hql.internal.ast.QuerySyntaxException: ...is not mapped
hql语句中表名和字段名需与实体类类名和属性名相同,而不是与数据库中的表名和字段名相同,因为hql语句相对于sql语句是面向对象的。一般数据库表名字段名与实体类类名属性名只有大小写的区别,但是要特别注意他们之前有区别的情况(比如多或少了某些单词)。
6.could not resolve property: ...of : ...
hql语句中关联查询写错了,或者字段不对应。
7.org.hibernate.hql.LazyInitializationException: failed to lazily initialize a collection of role : ... , could notinitialize proxy - no Session
session已关闭,需在设置ManyToOne外键关联处将lazy设为false。
8.Column ... cannot be null
将此 Column 的 not null 属性勾选去掉。
9.org.hibernate.HibernateException:null indexcolumn for collection: ...
用set代替List
10.java.lang.IlleglArgumentException:id toload is required for loading
使用类似get(id)的查询时,对传入的id进行非空校验。
11.JSON.toJSONString()之后出现$ref字段,前端无法解析,无法显示数据
方法1: 比如$ref指向某个parent父节点
调用JSON.toJSONString()时传入 SerializerFeature.DisableCircularReferenceDetect来禁用$ref
此时,有可能会出现java.lang.StackOverflowError
现象:循环 at com.alibaba.fastjson.serializer.CollectionSerializer.write...
可能存在重复引用或者循环引用(参考http://blog.csdn.net/z714359830/article/details/51527066)
也可能是一对多双向关系导致,需改代码,将数据库一些双向关联改为单向(http://www.cnblogs.com/zhujiabin/p/6132951.html)等。
方法2: 比如$ref指向另一个表对该表的引用
是一对多双向关系导致,将数据库一些双向关联改为单向,或者加@JSONField(serialize =false)(http://www.cnblogs.com/zhujiabin/p/6132951.html)。
方法3: 前台解析$ref
参考https://www.npmjs.com/package/fastjson_ref_resolver