【问题标题】:Return ID in MyBatis and PostgreSQLMyBatis 和 PostgreSQL 中的返回 ID
【发布时间】:2013-05-23 13:55:16
【问题描述】:

我的表格插件只有两列:ID 和 DTYPE。我想在 DTYPE 列中存储一个字符串。 ID 应该自动递增并由 insert 方法返回。为此,我像这样手动创建了“id_sequence”:

CREATE SEQUENCE id_sequence
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
OWNED BY plugin.id;

这是我的 mapper.xml 文件:

<insert id="insert"  useGeneratedKeys="true" parameterType="String">
    <selectKey keyProperty="id" resultType="int" order="BEFORE">
        SELECT CAST(nextval('id_sequence') as INTEGER) 
    </selectKey>
    INSERT INTO plugins (ID, DTYPE) 
    VALUES ( #{id}, #{plugin}) 
            RETURNING ID;  

</insert>

及对应的mapper.java:

int insert(String plugin);

问题陈述:1)我无法获得正确的 ID 值(它为空),2)我得到一个错误

 SQL: INSERT INTO public.ucpoplugin (ID, DTYPE)    VALUES ( ?, CORRECT_STRING)
 Cause: org.postgresql.util.PSQLException: FEHLER: Column »id« is of type bigint, but the sentence is has Type character varying.

【问题讨论】:

    标签: postgresql mybatis


    【解决方案1】:

    我建议在该 id 列上使用自动增量,然后不要只传递字符串作为参数,而是传递整个对象。插入后,该属性将被填充。

    见:http://edwin.baculsoft.com/2010/12/beginning-mybatis-3-part-3-how-to-get-tables-generated-ids/

    或者:Returning values from MyBatis <insert> mapped methods

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 2022-12-04
      • 2023-04-05
      • 2012-12-08
      • 2016-01-22
      • 1970-01-01
      相关资源
      最近更新 更多