保存后获取 auto_increment 键的结果

Getting the result of an auto_increment key after a save

我正在尝试解决使用 activejdbc 时客户端断开连接的问题。因此,客户端应用程序在没有互联网时对插入和后续更新和删除进行排队。然后,当它们具有连接性时,这些批次就会通过。

为了支持这一点,客户端使用临时主键,这些主键被替换为 auto_increment 恢复连接并应用批处理时生成的密钥的结果。为此,我需要在执行 save() 或 create() 时获取生成的密钥。 activejdbc可以使用https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getGeneratedKeys%28%29吗?

当您保存模型时,它的 ID 实际上变成了数据库返回的 auto-generated 值:

Person p = new Person(); 
p.set("first_name", "John", "last_name", "Doe");
p.saveIt(); 
System.out.println("ID of this model: " + p.getId()); 

但是,如果您尝试手动设置模型的 ID,则框架会假定您知道自己在做什么,并尝试在插入中使用该 ID。

请参阅:http://javalite.io/surrogate_primary_keys