这个方法都是hibernate 的保存方法 merge() : 1.如果对象的idertifier(以下简称为id)为空或在数据库不存在,则进行inert动作(此时如果对象的id有值也 将被hibernate自动生成的ID覆盖) replicate() : Persist the state of the given detached instance, reusing the current identifier value 使用背景: 假设你的对象的ID是用hibernate 负责生成的,但现在你想在数据库中插入一条已经指定ID的记录, 如果你用save() 不会报异常,但它会生成一条由hibernate生成的ID 的记录 如果你用merge() 跟用save 一样 如果用saveOrUpdate 如果数据库中不存在你指定的ID 则不会发生操作,如果存在,则会修改数据库的记录,而不是重新生成一条新记录 如果用persist() 会报异常。 哈哈 最后只剩下 replicate() 方法了 rereplicate()会完成你心愿! 注意: 此时 ID 的生成策略 是 uuid.hex 再 oracle10g 和 sql2000 上都经过测试。 别的生成策略在不同数据库上可能有问题,尤其像 native 等 由数据库管理生成ID 的 示例代码: MyObject myobj = new MyObject(); /** ReplicationMode 的其他值 |
hibernate merge() replicate() 方法解释
最新推荐文章于 2021-01-19 13:10:37 发布