一.mysql基本知识
- 主键必须唯一且非空。
- 联合主键中的任何一个键也必须非空,一组联合主键必须唯一。
- mysql视图没有索引,没有主键,没有外键。
二.Hibernate对视图的处理
- MyEclipse Persistence Tools在生成视图的pojo的时候,发现视图里面没有主键,于是乎把所有的字段作为一个联合主键。
- 这样是说不通的:
- 视图是对基类数据的另外一种表达,基类里有一个id是主键;但由于hibernate的原因,不得不将视图里id外的字段也作为主键,造成了联合主键。明显视图和基类结构都不一样了。
- hibernate查询的时候,如果联合主键中一个为null,查询出来的结果就是null,这对普通表和视图都是一样。显然,你不能保证视图里除id外的其它字段都不为空。
三.解决方案
- 视图的pojo按照基表的主键或者联合主键来配置。
- 如果还达不到你的目的,自己拼凑一个字段作为视图pojo主键。demo就参考这个http://blog.csdn.net/sl_nevergiveup/article/details/7077955