/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.dialect.identity;

import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
import org.hibernate.id.PostInsertIdentityPersister;

Represents a support for the Dialect identity key generation
Author:Andrea Boriero
Since:5.1
/** * Represents a support for the Dialect identity key generation * * @author Andrea Boriero * * @since 5.1 */
public interface IdentityColumnSupport {
Does this dialect support identity column key generation?
Returns:True if IDENTITY columns are supported; false otherwise.
/** * Does this dialect support identity column key generation? * * @return True if IDENTITY columns are supported; false otherwise. */
boolean supportsIdentityColumns();
Does the dialect support some form of inserting and selecting the generated IDENTITY value all in the same statement.
Returns:True if the dialect supports selecting the just generated IDENTITY in the insert statement.
/** * Does the dialect support some form of inserting and selecting * the generated IDENTITY value all in the same statement. * * @return True if the dialect supports selecting the just * generated IDENTITY in the insert statement. */
boolean supportsInsertSelectIdentity();
Whether this dialect have an Identity clause added to the data type or a completely separate identity data type
Returns:boolean
/** * Whether this dialect have an Identity clause added to the data type or a * completely separate identity data type * * @return boolean */
boolean hasDataTypeInIdentityColumn();
Provided we supportsInsertSelectIdentity, then attach the "select identity" clause to the insert statement.

Note, if supportsInsertSelectIdentity == false then the insert-string should be returned without modification.
Params:
  • insertString – The insert command
Returns:The insert command with any necessary identity select clause attached.
/** * Provided we {@link #supportsInsertSelectIdentity}, then attach the * "select identity" clause to the insert statement. * <p/> * Note, if {@link #supportsInsertSelectIdentity} == false then * the insert-string should be returned without modification. * * @param insertString The insert command * * @return The insert command with any necessary identity select * clause attached. */
String appendIdentitySelectToInsert(String insertString);
Get the select command to use to retrieve the last generated IDENTITY value for a particular table
Params:
  • table – The table into which the insert was done
  • column – The PK column.
  • type – The Types type code.
Throws:
Returns:The appropriate select command
/** * Get the select command to use to retrieve the last generated IDENTITY * value for a particular table * * @param table The table into which the insert was done * @param column The PK column. * @param type The {@link java.sql.Types} type code. * * @return The appropriate select command * * @throws MappingException If IDENTITY generation is not supported. */
String getIdentitySelectString(String table, String column, int type) throws MappingException;
The syntax used during DDL to define a column as being an IDENTITY of a particular type.
Params:
  • type – The Types type code.
Throws:
Returns:The appropriate DDL fragment.
/** * The syntax used during DDL to define a column as being an IDENTITY of * a particular type. * * @param type The {@link java.sql.Types} type code. * * @return The appropriate DDL fragment. * * @throws MappingException If IDENTITY generation is not supported. */
String getIdentityColumnString(int type) throws MappingException;
The keyword used to insert a generated value into an identity column (or null). Need if the dialect does not support inserts that specify no column values.
Returns:The appropriate keyword.
/** * The keyword used to insert a generated value into an identity column (or null). * Need if the dialect does not support inserts that specify no column values. * * @return The appropriate keyword. */
String getIdentityInsertString();
The Delegate for dealing with IDENTITY columns using JDBC3 getGeneratedKeys
Params:
  • persister – The persister
  • dialect – The dialect against which to generate the delegate
Returns:the dialect specific GetGeneratedKeys delegate
/** * The Delegate for dealing with IDENTITY columns using JDBC3 getGeneratedKeys * * @param persister The persister * @param dialect The dialect against which to generate the delegate * * @return the dialect specific GetGeneratedKeys delegate */
GetGeneratedKeysDelegate buildGetGeneratedKeysDelegate( PostInsertIdentityPersister persister, Dialect dialect); }