Open GoogleCodeExporter opened 9 years ago
问题产生的条件: one2one双向映射 使用insertWith(obj, null)插入其中任意一方。 发生问题的调用代码: Pet tom = new Pet("tom"); Master i = new Master("myname"); i.setPet(tom); tom.setMaster(i); dao.insertWith(i, null); 问题的详细说明: 从理论上讲2条insert sql肯定有先后 后插入对象的主键在先插入对象的时候还是未知的 除非在2次插入后nutz能够自动执行update hibernate就是怎么做的 在插入master的时候master中级联的pet由于还没有插入那么pet_id�� �能当0插入 其后插入pet的时候pet_id获取其自增值 此时如果不对master进行update 那么对应关系肯定就错了 异常堆栈: 相关日志: log4j: 2011-04-12 17:01:55,216 [main] DEBUG org.nutz.dao.impl.DefaultDaoExecutor - INSERT INTO t_pet(id,master_id,name) VALUES( 0, 0, 'tom') log4j: 2011-04-12 17:01:55,216 [main] DEBUG org.nutz.dao.sql.SqlImpl - Prepare: INSERT INTO t_pet(id,master_id,name) VALUES( ?, ?, ?) log4j: 2011-04-12 17:01:55,235 [main] DEBUG org.nutz.dao.impl.DefaultDaoExecutor - select @@IDENTITY log4j: 2011-04-12 17:01:55,235 [main] DEBUG org.nutz.dao.sql.SqlImpl - Prepare: select @@IDENTITY log4j: 2011-04-12 17:01:55,243 [main] DEBUG org.nutz.resource.Scans - Scan Resource by org.nutz.resource.impl.LocalResourceScan@104c575 log4j: 2011-04-12 17:01:55,331 [main] DEBUG org.nutz.castor.Castors - Using 18 castor for Castors log4j: 2011-04-12 17:01:55,337 [main] DEBUG org.nutz.dao.impl.DefaultDaoExecutor - INSERT INTO t_master(id,pet_id,name) VALUES( 0, 2, 'myname') log4j: 2011-04-12 17:01:55,337 [main] DEBUG org.nutz.dao.sql.SqlImpl - Prepare: INSERT INTO t_master(id,pet_id,name) VALUES( ?, ?, ?) log4j: 2011-04-12 17:01:55,338 [main] DEBUG org.nutz.dao.impl.DefaultDaoExecutor - select @@IDENTITY log4j: 2011-04-12 17:01:55,338 [main] DEBUG org.nutz.dao.sql.SqlImpl - Prepare: select @@IDENTITY
Original issue reported on code.google.com by zhuyin...@gmail.com on 12 Apr 2011 at 9:21
zhuyin...@gmail.com
恩 Nutz 的级联操作的确是很弱的 我在想,是不是不要级联,现在的级联在 60% 的时候还有点用,很多情况都是不给力的。 不过这个问题,等 Dao 重构完或许有办法解决 ...
Original comment by zozoh...@gmail.com on 12 Apr 2011 at 6:24
zozoh...@gmail.com
Original issue reported on code.google.com by
zhuyin...@gmail.com
on 12 Apr 2011 at 9:21