2016-10-11 1 views
1

내부 Mybatis 매퍼 파일 "useGeneratedKeys"를 지정 오류, 오류가 발생합니다 :의 MyBatis - 부동산 <code>useGeneratedKeys="true"</code>을 추가 할 때, <code><insert></code> 문, HSQL

org.hsqldb.HsqlException: user lacks privilege or object not found: id

구성은 PostgresqlMysql 있지만 Hsql 작동합니다. 부동산 useGeneratedKeys="true"을 제거

id BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) PRIMARY KEY

, 그것은 작동합니다

hsqlID 열은 다음과 같이 정의된다.

하지만 왜 이런 일이 발생합니까?

+0

저는 그것을 사용하고 있습니다. Postgres 호환성 (BigSerial 사용)과 함께 사용하고 있지만 Hsql에 상응하는 것으로 번역되었으므로 작동합니다. (http://hsqldb.org/doc/guide/compatibility-chapt.html#coc_compatibility_postgres) – Pau

+0

@Pau 나는 Hsql에서'Hsql'과 함께 작동하지 않을 것이다.'IDENTITY'의 구현은 특별하다. , 문제를 일으킬 수 있습니다. –

+1

@Pau이 문제는'hsqldb'의 이름에 대소 문자를 구분하여 발생합니다. @ fredt의 대답과 주석을 참고하십시오. –

답변

3

"id"의 대소 문자입니다. 데이터베이스의 열을

"id" BIGINT GENERATED ... 

으로 정의하거나 또는 MyBatis에서 ID (대문자)로 정의하십시오.

+0

질문에 명확하게 'id'는 이미 소문자라고 나와 있습니다. –

+0

SQL은 HSQLDB에 의해 대문자로 변환됩니다. 소문자를 강제하려면'id'를 큰 따옴표로 묶어야합니다. – fredt

+0

테이블을 만들 때 열 이름에 큰 따옴표를 추가해도 문제가 해결되지 않지만 'keyColumn'속성 ''에 대문자를 사용하여 문제를 해결했습니다 (예 :'keyColumn = "ID"'). –