想生成如下表:id identity(1,1)
rid int pk在hbm.xml里面可以通过<generator class="assigned">生成rid主键,
但是自增列id如何生成呢?
rid int pk在hbm.xml里面可以通过<generator class="assigned">生成rid主键,
但是自增列id如何生成呢?
解决方案 »
- Hibernate+Spring事务处理?
- mysql中可以嵌套java或者c吗?
- JSF的问题
- 请教 关于tomcat6.0数据库连接池与虚拟路径的配置
- java连sql
- J2EE怎么能学好它
- 高手能不能给一个完整的web service 实际项目的实际开发过程呀,万分感谢!!!!
- 救命啊,为什么tomcat服务一启动cpu就占用100%,重装jdk效果才好点,相同的应用发布在另一台机器上就很少出现这个情况!
- 我把Eclipse配制好,譬如字体大小,关键字,注释的颜色等,当我新建别的工作区后,设置全部变成原来的,怎么解决啊?
- myeclips发布的时候出错
- 求解:session取值问题 jstl和EL
- 请问 c3p0 xml配置与在方法中配置的区别
Identity : 根据底层数据库,来支持自动增长,不同的数据库用不同的主键增长方式。
特点:与底层数据库有关,要求数据库支持Identity,如MySQl中是auto_increment, SQL Server 中是Identity,支持的数据库有MySql、SQL Server、DB2、Sybase和HypersonicSQL。 Identity无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。采用数据库提供的主键生成机制。如DB2、SQL Server、MySQL中的主键生成机制。Increment : 对主键值采取自动增长的方式生成新的主键值,但要求底层数据库的支持Sequence。如Oracle,DB2等。需要在映射文件xxx.hbm.xml中加入Increment标志符的设置。
特点:由Hibernate本身维护,适用于所有的数据库,不适合多进程并发更新数据库,适合单一进程访问数据库。不能用于群集环境。主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:如果当前有多个实例访问同一个数据
库,那么由于各个实例各自维护主键状态,不同实例可能生成同样的主键,从而造成主键重复异常。因此,如果同一数据库有多个实例访问,此方式必须避免使用。至于你的问题,我觉得可以把他们两个做复合主键...
native 这个针对大多数现在流行的数据库
increment 这个是hibernate 帮你生成的,会在每次分配的时候去查一下数据库。