我在Play框架中使用ebean ORM(用于Java)。尝试在原始SQL(SqlQuery
)中编写INSERT ... RETURNING id
,如下所示:
SqlQuery sql = Ebean.createSqlQuery("INSERT INTO T1 (f1, f2, f3) VALUES (1, 2, 3) RETURNING id");
SqlRow row = sql.findUnique();
Long id = row.getLong("id");
查询实际返回插入ID很奇怪(var id
实际上包含一个有效值,每次运行上面的代码时都会增加该值。但T1
表中没有任何内容。
试图找出原因,我打开了PostgreSQL的debug5日志记录。似乎将sql.findUnique()
放入事务中并且事务被回滚。
那么,这怎么可能呢?
答案 0 :(得分:0)
您是否尝试Ebean.createSqlUpdate()
代替Ebean.createSqlQuery()
?