sql >> データベース >  >> RDS >> Mysql

生成されたキーを返すjOOQ挿入クエリ

    使用している構文は、複数のレコードを挿入するためのものです。これにより、それぞれ1つのフィールドを持つ4つのレコードが挿入されます。

    .values(node.getParentid())
    .values(node.getName())
    .values(node.getRem())
    .values(node.getUipos())
    

    しかし、あなたは4つのフィールドを宣言したので、それは機能しません:

    create.insertInto(Tblcategory.TBLCATEGORY, 
      Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS)
    

    あなたがおそらくやりたいことはこれです:

    Result<TblcategoryRecord> result = create
      .insertInto(Tblcategory.TBLCATEGORY, 
        Tblcategory.PARENT_ID, Tblcategory.NAME, Tblcategory.REM, Tblcategory.UIPOS)
      .values(node.getParentid(), node.getName(), node.getRem(), node.getUipos())
      .returning(Tblcategory.CATEGORY_ID)
      .fetch();
    

    または代わりに:

    Result<TblcategoryRecord> result = create
      .insertInto(Tblcategory.TBLCATEGORY) 
      .set(Tblcategory.PARENT_ID, node.getParentid())
      .set(Tblcategory.NAME, node.getName())
      .set(Tblcategory.REM, node.getRem())
      .set(Tblcategory.UIPOS, node.getUipos())
      .returning(Tblcategory.CATEGORY_ID)
      .fetch();
    

    おそらく、

    を使用することでさらに良い結果が得られます
    TblcategoryRecord result =
      // [...]
      .fetchOne();
    

    詳細については、マニュアルを検討してください:

    http://www.jooq。 org / doc / 2.6 / manual / sql-building / sql-statements / insert-statement /

    または、INSERTを作成するためのJavadoc 値を返すステートメント:

    http://www.jooq.org/javadoc/latest/org /jooq/InsertReturningStep.html



    1. 共有を排他ロックにアップグレードする際のMySQLデッドロックの回避

    2. MariaDBでデータベースの文字セットと照合を設定する

    3. JdbcDirectoryを使用してデータベースにLuceneインデックスを作成する

    4. 日付範囲を作成するために、左に参加するにはどうすればよいですか?