/*
 * 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.mapping;

import java.util.Iterator;

import org.hibernate.MappingException;
import org.hibernate.boot.spi.MetadataBuildingContext;
import org.hibernate.engine.spi.Mapping;
import org.hibernate.internal.util.collections.JoinedIterator;

Author:Gavin King
/** * @author Gavin King */
public class SingleTableSubclass extends Subclass { public SingleTableSubclass(PersistentClass superclass, MetadataBuildingContext metadataBuildingContext) { super( superclass, metadataBuildingContext ); } @SuppressWarnings("unchecked") protected Iterator getNonDuplicatedPropertyIterator() { return new JoinedIterator( getSuperclass().getUnjoinedPropertyIterator(), getUnjoinedPropertyIterator() ); } protected Iterator getDiscriminatorColumnIterator() { if ( isDiscriminatorInsertable() && !getDiscriminator().hasFormula() ) { return getDiscriminator().getColumnIterator(); } else { return super.getDiscriminatorColumnIterator(); } } public Object accept(PersistentClassVisitor mv) { return mv.accept( this ); } public void validate(Mapping mapping) throws MappingException { if ( getDiscriminator() == null ) { throw new MappingException( "No discriminator found for " + getEntityName() + ". Discriminator is needed when 'single-table-per-hierarchy' " + "is used and a class has subclasses" ); } super.validate( mapping ); } }