2016-11-17 8 views
1

Если я использую ebean SQLUpdate делать вставки в Oracle в Javaполучить последний добавленный идентификатор строки в ebean с SQLUpdate

Transaction tx = Ebean.beginTransaction(); 
    try { 

Transaction tx = Ebean.beginTransaction(); 
try { 

    String sqlString = "INSERT INTO customers VALUES (1001,'Nichols', 'Alexandra', '17 Maple Drive', "+ "'Nashua', 'NH','03062', SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE (-71.48923,42.72347,NULL), NULL, NULL))"; 
    SqlUpdate query = Ebean.createSqlUpdate(sqlString); 
    query.execute(); 
    String sqlQuery = 
      "SELECT @@IDENTITY AS 'Identity'"; 
    SqlQuery query2 = Ebean.createSqlQuery(sqlQuery); 

    List<SqlRow> list = query2.findList(); 
    System.out.println(list.get(0)); 
} finally { 
    tx.commit(); 
} 

Это дает ошибку

[PersistenceException: Query threw SQLException:ORA-00936: missing expression 
    Query was: 
SELECT @@IDENTITY AS 'Identity' 

] 

Как получить идентификатор последней вставленная строка?

+0

использование заказа по алфавиту в выберите запрос – XING

+0

@XING только что будет если основной ключ является автоматически увеличивающимся целым числом. –

ответ

0

После завершения инструкции INSERT, SELECT INTO или массового копирования @@ IDENTITY содержит последнее значение идентификации, которое генерируется оператором.

Но это в SQL Так я думаю, вы должны создать USP, и вы можете вернуть последнюю вставленную идентификатор записи в outparm из USP

String sqlString = "INSERT INTO customers VALUES (1001,'Nichols', 'Alexandra', '17 Maple Drive', "+ "'Nashua', 'NH','03062', SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE (-71.48923,42.72347,NULL), NULL, NULL))"; 
    SqlUpdate query = Ebean.createSqlUpdate(sqlString); 
    query.execute(); 
    SELECT @@IDENTITY AS 'Identity';