0

下面是在 PostgreSQL 数据库中成功创建表的 create table 语句。

CREATE TABLE
    SYNC_REPOSITORIES (
        REPOSITORY_ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
        REPOSITORY_NAME VARCHAR(256) NOT NULL,
        REPOSITORY_KIND VARCHAR(256) NOT NULL,
        LOGIN_NAME VARCHAR(256),
        LOGIN_INFO VARCHAR(2000),
        CONSTRAINT REPO_NAME_U UNIQUE (REPOSITORY_NAME));

Mybatis mapper.xml 用于插入

<insert id="insertRepository" parameterType="RepositoryDO" useGeneratedKeys="true" keyProperty="id" keyColumn="REPOSITORY_ID">
    INSERT INTO SYNC_REPOSITORIES (
          REPOSITORY_NAME,
          REPOSITORY_KIND,
          LOGIN_NAME,
          LOGIN_INFO)
    VALUES (
          #{name},
          #{kind},
          #{loginName,jdbcType=VARCHAR},
          #{loginInfo,jdbcType=VARCHAR})
  </insert>

由于 REPOSITORY_ID 是自动生成的值,我没有在插入语句中添加它。当这是通过 sqlSessionFactory 执行时,它返回一个错误说

设置参数时出错

SQL: INSERT INTO SYNC_REPOSITORIES (     REPOSITORY_NAME,     REPOSITORY_KIND,     LOGIN_NAME,        LOGIN_INFO)     VALUES (     ?,     ?,     ?,     ?)
### Cause: org.postgresql.util.PSQLException: ERROR: column "REPOSITORY_ID" does not exist
  Position: 194
; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: column "REPOSITORY_ID" does not exist
  Position: 194

相同的映射器 xml 适用于 MSSQL 和 ORACLE 数据库。我是 PostgreSQL 新手。

4

0 回答 0