hibernate 插入相同entity时 ID累加

qq_21992489 2015-11-09 12:45:33

DbContextHolder.setDbType("0");
List<EventInfo> list0 = hibernateTemplate.find("from EventInfo");

//以上是访问本地数据库 取出要copy的数据

switch(IP+dateBase){
case "localhost"+"spring" :
DbContextHolder.setDbType("1");
break;
case "localhost"+"ETCLaneDB" :
DbContextHolder.setDbType("2");
break;
}
//根据IP与数据库连接对应的数据库

for(int i=0;i<list0.size();i++){

hibernateTemplate.save(list0.get(i));

}
//在对应的数据库中保存copy的数据
List<EventInfo> list1 = hibernateTemplate.find("from EventInfo");
/ /取出对应数据库中的数据

这个是我的实体类 主键ID 及增长模式
<id name="EventID" >
<generator class="increment" />
</id>

现在有个问题 多次 执行这个指令的时候 保存在数据库中的数据ID 是累加的
问一下 如何单独计算ID 让他不累加到数据库呢?






...全文
188 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qq_21992489 2015-11-09
<id name="EventID" > <generator class="assigned" /> </id> 我发现我的业务只能 使用 assigned 因为所有的数据都是Excel 导入的, 已经解决问题了, 谢谢你的帮助
回复
qq_21992489 2015-11-09
引用 4 楼 yanghaimingg 的回复:
你在数据库中将表改成自增长吧,AUTO_INCREMENT 然后程序中将主键生成策略改成 <id name="EventID" > <generator class="native" /> </id>
我也是这样想的 但是sqlserver 原来的表 EventID 没有设置成 是标识 所有不能用native。。。 表是不能改的
回复
mtian2020 2015-11-09
你在数据库中将表改成自增长吧,AUTO_INCREMENT 然后程序中将主键生成策略改成 <id name="EventID" > <generator class="native" /> </id>
回复
qq_21992489 2015-11-09
引用 2 楼 yanghaimingg 的回复:
你这个主键增长类型不是每次加1吗?你说的id累加是什么意思
我的意思就是 将本地的一张表 复制到 另外的几个数据库的对应表里 但是因为increment的关系 不如说 原表的ID是 1-9; 第一个复制的表里ID 是1-9 但是第二个就是 10-18 以此类推 但是我希望ID 还是1-9 在不改变increment的前提下 怎么处理复制的问题呢?
回复
mtian2020 2015-11-09
你这个主键增长类型不是每次加1吗?你说的id累加是什么意思
回复
qq_21992489 2015-11-09
<id name="EventID" > <generator class="increment" /> </id> 是不是因为主键的增长类型导致的?
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-11-09 12:45
社区公告
暂无公告