hibernate的xml文件如何设置主键从某一个数开始?

主键是long类型的长度为6从100001开始递增... 主键是long类型的 长度为6 从100001开始递增 展开
 我来答
234飞
2010-04-16 · TA获得超过385个赞
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:182万
展开全部
主键生成策略:
assign : 主键不是由系统自动生成.而是在持久化之前需要手动指定oid。

increment :使用的时候先自动查询表中主键的最大值,然后加1.
select max( id) from xxxx . maxId + 1
只适合应用在测试环境下, 存在并发问题.

foreign :
1:1 shared primary key
<generator class="foreign">
<param name="property">xxx</param>
</grenerator>

sequence : 从sequence 中取值 . 适合使用在 oralce 之类的数据库中,因为有的数据库不支持序列 .
使用:
1. <id ****>
<generator class="sequnece">
</generator>
</id>
不指定序列名字,默认为 hibernate_sequence
2.
<generator class="sequence">
<param name="sequence">liucy_seq</param>
</generator>
liucy_seq为指定的序列名。

identity : 适用于 MySQL , DB2 , SQL Server。
MySQL中的建表语句:
create table a(
id int primary key auto_increment,
name ***,
age ****,
)
MySQL支持在建表的时候指定主键的自动生成策略。指定后就可以在使用hibernate的时候指定主键的生成策略为identity。插入数据的时候就不再插入主键,而由数据库自己负责。

native:
由Hibernate 根据配置的数据库方言( dialect )自动选择一种主键生成策略( sequence , identity )。

hilo ( high low的简写 ),高低位算法:
高位 :从某个表中得到。
低位 :1 --- 15 ;
h: 当前高位值:
max : 最大低位值 ( 15 )
low : 当前低位值 1---> 15

id = ( h-1 ) * max + low //生成的id为:高位值减1,然后乘以最大的低位值,再加上低位值。
1 : 1 , 2 , 3 , 。。。。 , 15
2 : 16 , 17 , 18 , 。。。。 30
3 : 31 , 32 , 。。。。。。。 45
使用:
<generator class="hilo">
<param name="table">my_table</param> //指定获得高位值的表。
<param name="column">value</param> //指定从表中的哪一列中获得高位值。
<param name="max_lo">15</param> //设定最大低位值。
</generator>

hilo的一个“变种”:seqhilo ,在Oracle中使用,指定高位值从序列中获得。
<generator class="seqhilo">
<param name="sequence">liucy_seq</param>
<param name="max_lo">15</param>
</generator>

uuid :UUID使用128位UUID算法生成主键,能够保证网络环境下的主键唯一性,也就能够保证在不同数据库及不同服务器下主键的唯一性。
uuid生成主键时根据如下内容来生成主键以达到主键的唯一性:
虚拟机启动时间 、 当前系统时间 、 网卡mac 地址 、硬盘的设备编号.

特点;能够保证数据库中的主键唯一性,生成的主键占用比较多的存贮空间
uuid生成的主键为字符串,如果使用,建表的时候主键需要指定为varchar2(Oracle中).

我觉得,即使有可能实现,最可能的方法也是identity这个方法,在用那些数据库的时候,看建表的时候是否可以将主键值的生成指定成你要求的那样。。。
utawe
2010-04-11 · TA获得超过182个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:138万
展开全部
不能,只能把xml主键那一块改成native,至于你想从100001,大可以到数据库中去修改 sqlserver 2000/2005 修改主键的identity(100001,1000000)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友57d33d6f5
2010-04-22 · 超过10用户采纳过TA的回答
知道答主
回答量:213
采纳率:0%
帮助的人:61.2万
展开全部
不能 只能设成native 或者uuid的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式