日期:2014-05-17  浏览次数:20952 次

Hibernate Oracle 数据库主键 如何设计?
现在遇到了一个问题,我在设计数据库的时候,必须符合以下规则:
1、表必须有主键。
2、表主键的自增交给Hibernate的sequence处理,而不是使用Trigger
3、每张表的数据行数不定(一般至少会在数十亿到数百亿条目,而且还不一定这些    )         

        我之前设计数据库的时候使用了Number数据类型,Hibernate映射的时候自动映射成 BigDecimal 数据类型了,但是Hibernate在更新数据的时候(因为设计成Hibernate自动控制自增   ),Hibernate无法完成插入或者Merge操作。
        后来把主键换成了Long类型,但是因为存在外键,建表的时候直接提示我同一张表不可以同时存在两个Long列(Long字符太多,最多2GB数据  )。

        现在我就是想如何完美的实现上面的要求,苦啊....求指教           
         

------解决方案--------------------
Long是用来存储大文本的,而且是废弃的类型。9以后就都用Clob和Blob了。

所谓的"Hibernate自动映射"就是生成一套配置文件而已,只有菜鸟级程序员才会一字不改就去使用,你把Java文件和hbm.xml文件里的主键类型都改成java.lang.Long不就完事了吗?

想映射整数就用Number(38,0) 已经有主键了就按照如下步骤操作
1 添加一个字段
2 update 表 set 新加字段=原主键字段
3 删除原主键字段
4 对新加字段添加主键