Генерация DAO с проблемой iBATIS

Я создал таблицу в MSSQL со следующей структурой:

**Table Name - TestTable**
id (int) (Primary key)
name (varchar) 
owner (varchar)

Я дал спецификацию Identity для столбца «id» с автоматическим увеличением на 1 для каждой новой строки. Когда я создал артефакты iBatis для TestTable, функция вставки генерируется в DAO со следующей подписью:

 void insert(TestTable record); 

Я хочу, чтобы функция вставки возвращала вновь сгенерированный идентификатор для этой строки, а не пустоту.

Как этого добиться?


person Vishal    schedule 11.08.2010    source источник


Ответы (1)


В файле ibatis SqlMap добавьте следующее:

<insert id="myInsertStatement">
    INSERT INTO TestTable (name, owner)
    VALUES (#name#, #owner#)
    <selectKey keyProperty="id" resultClass="int">
         SELECT SCOPE_IDENTITY()
    </selectKey>
</insert>

Или вы можете заменить Select Scope_identity другим SQL-запросом, предназначенным для возврата последнего вставленного столбца идентификации. Scope_identity специфичен для MS SQL (как указано в вопросе).

person David-Zazeski    schedule 30.09.2010