/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* 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.ogm.id.impl;
import org.hibernate.MappingException;
import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.identity.GetGeneratedKeysDelegate;
import org.hibernate.dialect.identity.IdentityColumnSupport;
import org.hibernate.dialect.identity.IdentityColumnSupportImpl;
import org.hibernate.id.PostInsertIdentityPersister;
import org.hibernate.ogm.dialect.identity.spi.IdentityColumnAwareGridDialect;
import org.hibernate.ogm.dialect.impl.GridDialects;
import org.hibernate.ogm.dialect.spi.GridDialect;
/**
* Define what kind of identity generation the {@link GridDialect} support.
*
* @see IdentityColumnAwareGridDialect
* @see IdentityColumnSupportImpl
* @author Davide D'Alto
*/
public class OgmIdentityColumnSupport implements IdentityColumnSupport {
public final boolean supportIdGenerationDuringInsert;
public OgmIdentityColumnSupport(GridDialect gridDialect) {
this.supportIdGenerationDuringInsert = GridDialects.hasFacet( gridDialect, IdentityColumnAwareGridDialect.class );
}
@Override
public boolean supportsIdentityColumns() {
return supportIdGenerationDuringInsert;
}
@Override
public boolean supportsInsertSelectIdentity() {
return false;
}
@Override
public boolean hasDataTypeInIdentityColumn() {
return true;
}
@Override
public String appendIdentitySelectToInsert(String insertString) {
return insertString;
}
@Override
public String getIdentitySelectString(String table, String column, int type) throws MappingException {
throw new MappingException( getClass().getName() + " does not support identity key generation" );
}
@Override
public String getIdentityColumnString(int type) throws MappingException {
throw new MappingException( getClass().getName() + " does not support identity key generation" );
}
@Override
public String getIdentityInsertString() {
return null;
}
@Override
public GetGeneratedKeysDelegate buildGetGeneratedKeysDelegate(
PostInsertIdentityPersister persister,
Dialect dialect) {
return new GetGeneratedKeysDelegate( persister, dialect );
}
}