/*
* 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: - MappingException – If IDENTITY generation is not supported.
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: - MappingException – If IDENTITY generation is not supported.
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);
}