hibernate id问题

fufengrui 2013-01-05 07:40:56

如何能够实现,hibernate 配置文件中的主键,默认保存的时候是自动增长的,如果赋值,则保存的时候为所赋的值?

如何配置和mysql数据库中的主键如何定义?

这里如何配置
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="assigned"></generator>
</id>

mysql中对应的主键如何设置?

系统中如何调用保存方法

请教各位大虾了
...全文
409 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
fufengrui 2013-01-22
  • 打赏
  • 举报
回复
改用assign了
licip 2013-01-11
  • 打赏
  • 举报
回复
引用 1 楼 Ywasd 的回复:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!
+1
  • 打赏
  • 举报
回复
按你需求,数据库已经有了一个id为5的记录了,你又手动插入一个id为5的数据,报错怎么办?
fufengrui 2013-01-11
  • 打赏
  • 举报
回复
引用 12 楼 forgetsam 的回复:
引用 11 楼 fufengrui 的回复:发出的sql中没有id字段 你都告诉Hibernate了,由数据库去自增,还要个屁ID字段,它没你那么傻。
得支持手动ID赋值啊,不发出ID,怎么支持手动ID赋值啊 我的意思是如果系统没有指定ID字段,或者ID地段为空,则按照mysql的自增,实现插入,如果指定了ID字段的值,则连通ID一起插入
liangtu 2013-01-11
  • 打赏
  • 举报
回复
可能自增,可能手动复制,程序没你那么聪明。而且,你手动赋值的id有可能因为存在相同的id,而报错。 做为主键,没什么业务含义,没必要设计这么复杂。
lisongajava 2013-01-11
  • 打赏
  • 举报
回复
如果mysql中id已经设置为自动增长了,再手动赋值给id是会报错的,要么手动赋值,要么自动增长,对于主键ID只能二选一,如果需要楼主那么需求的话,不妨在在设计表时多添加一个字段, --表-- id(主键,自增),idCopy(类型和主键一样),其他字段 1 1 。。。 2 2 。。。 如果需要自动赋值的时候就让idCopy的取值和id一样,最麻烦不过在添加一条记录后再发送一条update语句 如果需要手动赋值的时候,主键照样自动增长,ipCopy随你怎么赋值 如果如果表已经设计好了,不能改了,又希望实现这样的需求,同求大神指点~~
davidlovess 2013-01-11
  • 打赏
  • 举报
回复
配置文件设置: <class name="引用" table="对应表名"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native"></generator> </id> </class> MySQL中id定义成自动增长 如: create table my_table( user_id int identity );
傲雪kimi 2013-01-11
  • 打赏
  • 举报
回复
引用 14 楼 fufengrui 的回复:
引用 12 楼 forgetsam 的回复:引用 11 楼 fufengrui 的回复:发出的sql中没有id字段 你都告诉Hibernate了,由数据库去自增,还要个屁ID字段,它没你那么傻。 得支持手动ID赋值啊,不发出ID,怎么支持手动ID赋值啊 我的意思是如果系统没有指定ID字段,或者ID地段为空,则按照mysql的自增,实现插入,如果指定了ID……
那楼主就要重新定义编号字段来满足需求了
zhangjingtao6100 2013-01-10
  • 打赏
  • 举报
回复
引用 1 楼 Ywasd 的回复:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!
forgetsam 2013-01-10
  • 打赏
  • 举报
回复
引用 11 楼 fufengrui 的回复:
发出的sql中没有id字段
你都告诉Hibernate了,由数据库去自增,还要个屁ID字段,它没你那么傻。
fufengrui 2013-01-10
  • 打赏
  • 举报
回复
发出的sql中没有id字段
fufengrui 2013-01-10
  • 打赏
  • 举报
回复
不灵啊,hibernate3
cheneyjava 2013-01-08
  • 打赏
  • 举报
回复
引用 1 楼 Ywasd 的回复:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!
xukaiccit 2013-01-07
  • 打赏
  • 举报
回复
引用 1 楼 Ywasd 的回复:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!
正确
wuzhenbao1 2013-01-07
  • 打赏
  • 举报
回复
感觉挺别扭的,为什么要“默认保存的时候是自动增长的,如果赋值,则保存的时候为所赋的值”?如果在mysql设置auto_increment,那你每次插入这个列都会自增的。 除非不使用auto_increment,你自己用别的方法生成id,比如UUID,那你就可以手动去控制了。
熊猫大虾 2013-01-07
  • 打赏
  • 举报
回复
配置文件: <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native"></generator> </id> MySQL中的建表语句: identity是定义标识列,该字段应该是整型的 如: create table my_table( user_id int identity, user_name char(8) ); MySQL支持在建表的时候指定主键的自动生成策略。指定后就可以在使用hibernate的时候指定主键的生成策略为identity。插入数据的时候就不再插入主键,而由数据库自己负责。
xingfuzhuzi1314 2013-01-07
  • 打赏
  • 举报
回复
引用 1 楼 Ywasd 的回复:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!
+1
fufengrui 2013-01-07
  • 打赏
  • 举报
回复
不太好使呢,hibernate发出的sql语句中怎么不包含id字段嘞
dracularking 2013-01-05
  • 打赏
  • 举报
回复
引用 1 楼 Ywasd 的回复:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!
+1
Ywasd 2013-01-05
  • 打赏
  • 举报
回复
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧