Class SqlAstTranslatorWithMerge<T extends JdbcOperation>

java.lang.Object
org.hibernate.dialect.sql.ast.spi.AbstractSqlAstTranslator<T>
org.hibernate.dialect.sql.ast.spi.SqlAstTranslatorWithMerge<T>
All Implemented Interfaces:
Appendable, SqlAstWalker, SqlAstTranslator<T>, SqlAppender
Direct Known Subclasses:
DB2SqlAstTranslator, PostgreSQLFamilySqlAstTranslator

@SPI({USE,IMPLEMENT}) public abstract class SqlAstTranslatorWithMerge<T extends JdbcOperation> extends AbstractSqlAstTranslator<T>

Supported provider base for translators which implement a full insert-or-update-or-delete MERGE command.

Use createMergeOperation(OptionalTableUpdate) to translate an OptionalTableUpdate into an executable MergeOperation. That method owns the operation-construction lifecycle. A provider customizes SQL grammar through the protected renderMerge... callbacks.

  • Constructor Details

  • Method Details

    • createMergeOperation

      public final MergeOperation createMergeOperation(OptionalTableUpdate optionalTableUpdate)

      Creates the mutation operation for performing a full MERGE.

      The optional-table update is [#renderMergeStatement translated] and wrapped in a MergeOperation. Override a protected rendering callback to customize the SQL; the operation lifecycle itself is invariant.

    • expectation

      protected Expectation expectation(OptionalTableUpdate optionalTableUpdate)
    • renderMergeStatement

      @SPI(IMPLEMENT) protected void renderMergeStatement(OptionalTableUpdate optionalTableUpdate)

      Renders the complete optional-table update as a MERGE statement.

      Override this only when the statement structure cannot be expressed by a more focused callback, and preserve the order of its insert, optional delete, and update arms.

    • renderMergeInto

      @SPI(IMPLEMENT) protected void renderMergeInto(OptionalTableUpdate optionalTableUpdate)
      Renders the merge into clause and target table.
    • renderMergeTargetAlias

      @SPI(IMPLEMENT) protected void renderMergeTargetAlias()
      Renders the target-table alias, including any required as keyword.
    • renderMergeUsing

      @SPI(IMPLEMENT) protected void renderMergeUsing(OptionalTableUpdate optionalTableUpdate)
      Renders the complete using clause around the generated source query.
    • renderMergeSourceAlias

      @SPI(IMPLEMENT) protected void renderMergeSourceAlias()
      Renders the source-query alias, including any required as keyword.
    • renderMergeUsingQuery

      protected void renderMergeUsingQuery(OptionalTableUpdate optionalTableUpdate)
    • renderMergeUsingQuerySelection

      @SPI(IMPLEMENT) protected void renderMergeUsingQuerySelection(ColumnValueBinding selectionBinding)
      Renders one selection and alias in the generated using query.
    • renderMergeOn

      @SPI(IMPLEMENT) protected void renderMergeOn(OptionalTableUpdate optionalTableUpdate)
      Renders the key-matching on predicate.
    • renderMergeInsert

      @SPI(IMPLEMENT) protected void renderMergeInsert(OptionalTableUpdate optionalTableUpdate)
      Renders the when not matched insert arm.
    • renderMergeDelete

      @SPI(IMPLEMENT) protected void renderMergeDelete(OptionalTableUpdate optionalTableUpdate)
      Renders the when matched delete arm for an optional table.
    • renderMergeUpdate

      @SPI(IMPLEMENT) protected void renderMergeUpdate(OptionalTableUpdate optionalTableUpdate)
      Renders the when matched update arm when updatable bindings exist.