lzth.net
当前位置:首页 >> 要高手:使用hiBErnAtE的复合主键,记录插入数据库报错,复合主键中一列无法自增长 >>

要高手:使用hiBErnAtE的复合主键,记录插入数据库报错,复合主键中一列无法自增长

保存时 不要set ID 直接保存 save(). 主键自增的 不能设定

数据库中的列不用设置自增,在配置文件里 <generator class="native" /> 中的native可以改为increment,pojo对象不要给id赋值,就可以了

这个可以看一下Hibernate的参考 下面给你贴generator部分 increment 用于为long, short或者int类型生成 唯一标识.只有在没有其他进程往同一张表中插入数据时 才能使用. 在集群下不要使用. identity 对DB2,MySQL, MS SQL Server, Sybase

你的问题应该是id实现不了自动增长. 上次我做的一个项目有一部分也是因为复合主键实现不了自动增长所以采用了手动赋值的办法 记录插入/更新时首先从数据库中查询出当前条数,不存在则为记录数+1 这样来实现的 当时的配置主文件复合主

你既然都用了composite-id了,就不能用generator了.你想想,既然是复合主键了,那么主键的值肯定都是你自己手动设置的了,那里还需要用自动OID生成策略呢?所以你修改成:就可以了.你看我的个人说明里面的资料,有对符合主键映射的2中方式的详细说明;希望对你有用

楼主,这个是MYSQL的设置问题,,,,,看看生成的表的SQL代码,是如何的

A a=new A();要是用save(a)的方法,save后,便可以通过 a.getId() 就可以找到了.就像楼上说的,你要是用原生的方法insert的话,id应该是你自己赋的值的啊.

外键reference主键的时候,列数要一致就是说不能一个字段主键对应2个字段外键.后面的去一个吧.

第一条和第二条的记录相同了,当然会提示错误了.

用Hibernate的话,出现这个错误,应该是你的oid没有设置对,我们在用hibernate的时候,通常用native比较多,他可以自动选择适合你当前使用的数据库的ID生成方式,还有就是,如果不清楚表之间的关系,最好是使用自动建表,方便快捷

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.lzth.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com