Ebean的SqlQuery与PostgreSQL的“INSERT ... RETURNING”

时间:2015-11-23 01:00:33

标签: postgresql playframework ebean

我在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()放入事务中并且事务被回滚。

那么,这怎么可能呢?

1 个答案:

答案 0 :(得分:0)

您是否尝试Ebean.createSqlUpdate()代替Ebean.createSqlQuery()