/*
* 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.model.impl;
import java.io.Serializable;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.ogm.model.key.spi.EntityKey;
import org.hibernate.ogm.model.key.spi.EntityKeyMetadata;
import org.hibernate.ogm.persister.impl.OgmEntityPersister;
import org.hibernate.ogm.type.spi.GridType;
import org.hibernate.ogm.util.impl.LogicalPhysicalConverterHelper;
/**
* @author Emmanuel Bernard <emmanuel@hibernate.org>
*/
public final class EntityKeyBuilder {
private EntityKeyBuilder() {
}
//static method because the builder pattern version was showing up during profiling
public static EntityKey fromPersister(
final OgmEntityPersister persister,
final Serializable id,
SessionImplementor session) {
return fromData(
persister.getEntityKeyMetadata(),
persister.getGridIdentifierType(),
id,
session );
}
//static method because the builder pattern version was showing up during profiling
public static EntityKey fromData(
EntityKeyMetadata entityKeyMetadata,
GridType identifierGridType,
final Serializable id,
SessionImplementor session) {
Object[] values = LogicalPhysicalConverterHelper.getColumnsValuesFromObjectValue(
id,
identifierGridType,
entityKeyMetadata.getColumnNames(),
session
);
return new EntityKey( entityKeyMetadata, values );
}
}