google-code-export / nutz

Automatically exported from code.google.com/p/nutz
Apache License 2.0
1 stars 1 forks source link

Enhancement:为insert增加是否忽略主键的开关 #286

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
问题的详细说明:

对于insert方法,我们知道:当@Id(auto=false)的时候,不会忽略��
�键的值,反之忽略。

但有的时候,我们希望可以动态改变这种忽略的条件,在插��
�的时候设置一个开关,可以控制是否忽略主键的值,特别是�
��做数据迁移的时候,例如:
我在A数据库id是自增长模式,我需要迁移到B数据库,当然也�
��自增长模式。
这个时候,我希望A数据库的数据在迁移到B数据库中的时候,
还是保留原有的id数据,而不是由B来重新生成新的id。

当迁移完毕后,新数据中的id才将交给B自增长。

总结:
希望为insert增加是否忽略主键的开关

Original issue reported on code.google.com by fjayb...@gmail.com on 12 Sep 2010 at 2:15

GoogleCodeExporter commented 9 years ago
Issue 125 has been merged into this issue.

Original comment by zozoh...@gmail.com on 7 Nov 2010 at 11:16

GoogleCodeExporter commented 9 years ago
至少在 NutDao 里,应该增加一个新的接口函数 

<T> T insert(T obj, boolean ignoreAutoIncrement)

如果第二个参数为 true, 它将忽略 @Id, 
全部字段都会被插入(当然,FieldFilter 也会起作用)

但是,针对数据迁移的诉求,某些数据库是可以的,但是默��
�另外的数据(比如 PSQL),如果设置了触发器,即使指定了 
id 
值,插入后,也会被触发器修改。解决它的办法就是,在新��
�据库先不建立触发器,等导入完成后,再建立触发器

如果真的使用 Nutz 
来建立一个数据迁移的工程,其实这个特性帮助不是很大,��
�为你的 POJO 完全可以设成 @Id(auto=false),或者直接使用 Record 
=> Chain 的方式来迁移数据

只不过用 POJO 的方法还是稍微方便了那么一点点

Original comment by zozoh...@gmail.com on 29 Nov 2010 at 8:13