Top Fields Constructors Methods
org.eclipse.persistence.platform.database

public Class H2Platform

extends DatabasePlatform
Class Inheritance
Imports
java.io.*, java.util.*, org.eclipse.persistence.internal.databaseaccess.DatabaseCall, .FieldTypeDefinition, org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter, .SQLSelectStatement, org.eclipse.persistence.internal.helper.ClassConstants, .DatabaseField, .DatabaseTable, org.eclipse.persistence.queries.ValueReadQuery, org.eclipse.persistence.exceptions.ValidationException, org.eclipse.persistence.expressions.ExpressionOperator

Field Summary

Modifier and TypeField and Description
private static final long
Inherited from org.eclipse.persistence.platform.database.DatabasePlatform:
DEFAULT_VARCHAR_SIZE

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public boolean
protected Hashtable<Class<?>, FieldTypeDefinition>
buildFieldTypes()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.buildFieldTypes.

Return the mapping of class types to database types for the schema framework.
public ValueReadQuery
buildSelectQueryForIdentity()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.buildSelectQueryForIdentity.

INTERNAL: Returns query used to read back the value generated by Identity.
public ValueReadQuery
buildSelectQueryForSequenceObject(String seqName, Integer size)

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.buildSelectQueryForSequenceObject.

INTERNAL: Returns query used to read value generated by sequence object (like Oracle sequence).
public int
computeMaxRowsForSQL(int firstResultIndex, int maxResults)

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.computeMaxRowsForSQL.

INTERNAL: Use the JDBC maxResults and firstResultIndex setting to compute a value to use when limiting the results of a query in SQL.
protected String
getCreateTempTableSqlPrefix()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.getCreateTempTableSqlPrefix.

INTERNAL: Override this method if the platform supports temporary tables.
public String
public ValueReadQuery
getTimestampQuery()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.getTimestampQuery.

Implements org.eclipse.persistence.internal.databaseaccess.Platform.getTimestampQuery.

This method can be overridden by subclasses to return a query that will return the timestamp from the server.
protected void
public boolean
isAlterSequenceObjectSupported()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.isAlterSequenceObjectSupported.

INTERNAL: Override this method if the platform supports sequence objects and it's possible to alter sequence object's increment in the database.
public boolean
isDynamicSQLRequiredForFunctions()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.isDynamicSQLRequiredForFunctions.

INTERNAL H2 has some issues with using parameters on certain functions and relations.
public boolean
public static ExpressionOperator
monthsBetweenOperator()

INTERNAL: Use MONTH function for MONTH_BETWEEN.

public void
printFieldIdentityClause(Writer writer)

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.printFieldIdentityClause.

Append the receiver's field 'identity' constraint clause to a writer.
public void
printSQLSelectStatement(DatabaseCall call, ExpressionSQLPrinter printer, SQLSelectStatement statement)

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.printSQLSelectStatement.

Print the pagination SQL using H2 syntax " LIMIT <max> OFFSET <first>".
public boolean
public boolean
supportsGlobalTempTables()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.supportsGlobalTempTables.

INTERNAL: Indicates whether the platform supports global temporary tables.
public boolean
supportsIdentity()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.supportsIdentity.

INTERNAL: Indicates whether the platform supports identity.
public boolean
supportsSequenceObjects()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.supportsSequenceObjects.

INTERNAL: Indicates whether the platform supports sequence objects.
public boolean
public static ExpressionOperator
toNumberOperator()

INTERNAL: Use CONVERT function for toNumber.

public void
writeUpdateOriginalFromTempTableSql(Writer
for writing the sql
writer
,
DatabaseTable
is original table for which temp table is created.
table
,
Collection<DatabaseField>
primary key fields for the original table.
pkFields
,
Collection<DatabaseField>
fields to be assigned a new value.
assignedFields
)

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.writeUpdateOriginalFromTempTableSql.

H2 does not allow using () in the update if only one field.

Field Detail

serialVersionUIDback to summary
private static final long serialVersionUID

Constructor Detail

H2Platformback to summary
public H2Platform()

Method Detail

allowBindingForSelectClauseback to summary
public boolean allowBindingForSelectClause()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.allowBindingForSelectClause.

Annotations
@Override
buildFieldTypesback to summary
protected Hashtable<Class<?>, FieldTypeDefinition> buildFieldTypes()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.buildFieldTypes.

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.buildFieldTypes.

Return the mapping of class types to database types for the schema framework.

Annotations
@Override
buildSelectQueryForIdentityback to summary
public ValueReadQuery buildSelectQueryForIdentity()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.buildSelectQueryForIdentity.

Doc from org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.buildSelectQueryForIdentity.

INTERNAL: Returns query used to read back the value generated by Identity. This method is called when identity NativeSequence is connected, the returned query used until the sequence is disconnected. If the platform supportsIdentity then (at least) one of buildSelectQueryForIdentity methods should return non-null query.

Alternatively, if the platform supports java.sql.Statement#getGeneratedKeys(), see DatabasePlatform#supportsReturnGeneratedKeys()

Annotations
@Override
buildSelectQueryForSequenceObjectback to summary
public ValueReadQuery buildSelectQueryForSequenceObject(String seqName, Integer size)

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.buildSelectQueryForSequenceObject.

Doc from org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.buildSelectQueryForSequenceObject.

INTERNAL: Returns query used to read value generated by sequence object (like Oracle sequence). In case the other version of this method (taking no parameters) returns null, this method is called every time sequence object NativeSequence reads. If the platform supportsSequenceObjects then (at least) one of buildSelectQueryForSequenceObject methods should return non-null query.

Annotations
@Override
computeMaxRowsForSQLback to summary
public int computeMaxRowsForSQL(int firstResultIndex, int maxResults)

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.computeMaxRowsForSQL.

INTERNAL: Use the JDBC maxResults and firstResultIndex setting to compute a value to use when limiting the results of a query in SQL. These limits tend to be used in two ways. 1. MaxRows is the index of the last row to be returned (like JDBC maxResults) 2. MaxRows is the number of rows to be returned H2 uses case #2 and therefore the maxResults has to be altered based on the firstResultIndex.

Annotations
@Override
getCreateTempTableSqlPrefixback to summary
protected String getCreateTempTableSqlPrefix()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.getCreateTempTableSqlPrefix.

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.getCreateTempTableSqlPrefix.

INTERNAL: Override this method if the platform supports temporary tables. This should contain the beginning of sql string for creating temporary table - the sql statement name, for instance: "CREATE GLOBAL TEMPORARY TABLE ". Don't forget to end it with a space.

Annotations
@Override
getProcedureCallHeaderback to summary
public String getProcedureCallHeader()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.getProcedureCallHeader.

INTERNAL: Used for stored procedure calls.

Annotations
@Override
getTimestampQueryback to summary
public ValueReadQuery getTimestampQuery()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.getTimestampQuery.

Implements org.eclipse.persistence.internal.databaseaccess.Platform.getTimestampQuery.

Doc from org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.getTimestampQuery.

This method can be overridden by subclasses to return a query that will return the timestamp from the server. return null if the time should be the local time.

Annotations
@Override
initializePlatformOperatorsback to summary
protected void initializePlatformOperators()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.initializePlatformOperators.

Doc from org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.initializePlatformOperators.

Initialize any platform-specific operators

Annotations
@Override
isAlterSequenceObjectSupportedback to summary
public boolean isAlterSequenceObjectSupported()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.isAlterSequenceObjectSupported.

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.isAlterSequenceObjectSupported.

INTERNAL: Override this method if the platform supports sequence objects and it's possible to alter sequence object's increment in the database.

Annotations
@Override
isDynamicSQLRequiredForFunctionsback to summary
public boolean isDynamicSQLRequiredForFunctions()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.isDynamicSQLRequiredForFunctions.

INTERNAL H2 has some issues with using parameters on certain functions and relations. This allows statements to disable binding only in these cases.

Annotations
@Override
isH2back to summary
public boolean isH2()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.isH2.

Implements org.eclipse.persistence.internal.databaseaccess.Platform.isH2.

Annotations
@Override
monthsBetweenOperatorback to summary
public static ExpressionOperator monthsBetweenOperator()

INTERNAL: Use MONTH function for MONTH_BETWEEN.

printFieldIdentityClauseback to summary
public void printFieldIdentityClause(Writer writer) throws ValidationException

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.printFieldIdentityClause.

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.printFieldIdentityClause.

Append the receiver's field 'identity' constraint clause to a writer.

Annotations
@Override
printSQLSelectStatementback to summary
public void printSQLSelectStatement(DatabaseCall call, ExpressionSQLPrinter printer, SQLSelectStatement statement)

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.printSQLSelectStatement.

Print the pagination SQL using H2 syntax " LIMIT <max> OFFSET <first>".

Annotations
@Override
supportsForeignKeyConstraintsback to summary
public boolean supportsForeignKeyConstraints()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.supportsForeignKeyConstraints.

Annotations
@Override
supportsGlobalTempTablesback to summary
public boolean supportsGlobalTempTables()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.supportsGlobalTempTables.

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.supportsGlobalTempTables.

INTERNAL: Indicates whether the platform supports global temporary tables. "Global" means that an attempt to create temporary table with the same name for the second time results in exception. EclipseLink attempts to create global temporary table in the beginning of UpdateAllQuery, execution and assumes that it already exists in case SQLException results. In the end of UpdateAllQuery execution all rows are removed from the temporary table - it is necessary in case the same temporary table will be used by another UpdateAllQuery in the same transaction. Override this method if the platform supports global temporary tables. Note that this method is ignored in case supportsLocalTempTables() returns true.

Annotations
@Override
supportsIdentityback to summary
public boolean supportsIdentity()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.supportsIdentity.

Doc from org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.supportsIdentity.

INTERNAL: Indicates whether the platform supports identity. This method is to be used *ONLY* by sequencing classes

Annotations
@Override
supportsSequenceObjectsback to summary
public boolean supportsSequenceObjects()

Overrides org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.supportsSequenceObjects.

Doc from org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.supportsSequenceObjects.

INTERNAL: Indicates whether the platform supports sequence objects. This method is to be used *ONLY* by sequencing classes

Annotations
@Override
supportsStoredFunctionsback to summary
public boolean supportsStoredFunctions()

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.supportsStoredFunctions.

Annotations
@Override
toNumberOperatorback to summary
public static ExpressionOperator toNumberOperator()

INTERNAL: Use CONVERT function for toNumber.

writeUpdateOriginalFromTempTableSqlback to summary
public void writeUpdateOriginalFromTempTableSql(Writer writer, DatabaseTable table, Collection<DatabaseField> pkFields, Collection<DatabaseField> assignedFields) throws IOException

Overrides org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.writeUpdateOriginalFromTempTableSql.

H2 does not allow using () in the update if only one field.

Parameters
writer:Writer

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.writeUpdateOriginalFromTempTableSql.

for writing the sql

table:DatabaseTable

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.writeUpdateOriginalFromTempTableSql.

is original table for which temp table is created.

pkFields:Collection<DatabaseField>

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.writeUpdateOriginalFromTempTableSql.

primary key fields for the original table.

assignedFields:Collection<DatabaseField>

Doc from org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.writeUpdateOriginalFromTempTableSql.

fields to be assigned a new value.

Annotations
@Override