日期:2014-05-19  浏览次数:20585 次

hibernate id问题

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

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

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

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

系统中如何调用保存方法

请教各位大虾了
hibernate

------解决方案--------------------
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!
------解决方案--------------------
引用:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!

+1
------解决方案--------------------
引用:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!

+1
------解决方案--------------------
配置文件:
       <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。插入数据的时候就不再插入主键,而由数据库自己负责。
------解决方案--------------------
感觉挺别扭的,为什么要“默认保存的时候是自动增长的,如果赋值,则保存的时候为所赋的值”?如果在mysql设置auto_increment,那你每次插入这个列都会自增的。
除非不使用auto_increment,你自己用别的方法生成id,比如UUID,那你就可以手动去控制了。
------解决方案--------------------
引用:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!
 正确
------解决方案--------------------
引用:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!

------解决方案--------------------
引用:
发出的sql中没有id字段


你都告诉Hibernate了,由数据库去自增,还要个屁ID字段,它没你那么傻。
------解决方案--------------------
引用:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!

------解决方案--------------------
按你需求,数据库已经有了一个id为5的记录了,你又手动插入一个id为5的数据,报错怎么办?
------解决方案--------------------
引用:
把 class="assigned"改成class=“native”就是主键自动自动增长 mysql id设置成auto_increment就ok了!