assigned , native , identity 区别-Field 'id' doesn't have a default value问题解决方法
综合参考:http://blog.youkuaiyun.com/huaweitman/article/details/39025553
http://chen.ch.j.blog.163.com/blog/static/1324171212010919325852/
就是,hibernate设置主键生成策略为自动生成的时候,会报错:Field 'id' doesn't have a default value
解决办法是,要么把数据库的这个id改为自动生成,如果是每次都使用程序写的,那么就把hibernate改为assigned
assigned 与 native :
在用Hibernate的时候,当有表中的主键是库自动生成的时候将使用native。 而当是自己添加的时候则需要改为assigned。 因为assigned是指指定的,分配的, 如果你不赋予他值,那么他是不能实现的. 需要人工,自己把某个东西赋予给它 所以是assigned
native 与 identity :
修饰符,代表自增的意思,只是看你选择的数据库不同而选择不同,一般来说象SQL,MYSQL这类的数据库都是选择identity。在HIBERNATE配置中native是默认的,泛指的自增,也就是说除了oracle数据库外(oracle下用native需要用到一个叫hibernate_sequence的sequence),大部分数据库你都可以使用默认的native来代表自增。