org.hibernate.metamodel.model.domain.internal.EmbeddableTypeImpl Maven / Gradle / Ivy
/*
* 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.metamodel.model.domain.internal;
import java.io.Serializable;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.graph.internal.SubGraphImpl;
import org.hibernate.graph.spi.SubGraphImplementor;
import org.hibernate.metamodel.model.domain.spi.EmbeddedTypeDescriptor;
import org.hibernate.metamodel.model.domain.spi.ManagedTypeDescriptor;
import org.hibernate.type.CompositeType;
/**
* Standard Hibernate implementation of JPA's {@link javax.persistence.metamodel.EmbeddableType}
* contract
*
* @author Emmanuel Bernard
* @author Steve Ebersole`
*/
public class EmbeddableTypeImpl
extends AbstractManagedType
implements EmbeddedTypeDescriptor, Serializable {
private final ManagedTypeDescriptor parent;
private final CompositeType hibernateType;
public EmbeddableTypeImpl(
Class javaType,
ManagedTypeDescriptor parent,
CompositeType hibernateType,
SessionFactoryImplementor sessionFactory) {
super( javaType, null, null, sessionFactory );
this.parent = parent;
this.hibernateType = hibernateType;
}
@Override
public PersistenceType getPersistenceType() {
return PersistenceType.EMBEDDABLE;
}
public ManagedTypeDescriptor getParent() {
return parent;
}
public CompositeType getHibernateType() {
return hibernateType;
}
@Override
@SuppressWarnings("unchecked")
public SubGraphImplementor makeSubGraph(Class subType) {
return new SubGraphImpl( this, true, sessionFactory() );
}
}