Example usage for org.hibernate.mapping Subclass setDiscriminatorValue

List of usage examples for org.hibernate.mapping Subclass setDiscriminatorValue

Introduction

In this page you can find the example usage for org.hibernate.mapping Subclass setDiscriminatorValue.

Prototype

public void setDiscriminatorValue(String discriminatorValue) 

Source Link

Usage

From source file:org.codehaus.groovy.grails.orm.hibernate.cfg.AbstractGrailsDomainBinder.java

License:Apache License

/**
 * Binds a sub class.//from   w w w  .j  a  v  a 2s . com
 *
 * @param sub      The sub domain class instance
 * @param parent   The parent persistent class instance
 * @param mappings The mappings instance
 * @param sessionFactoryBeanName  the session factory bean name
 */
protected void bindSubClass(GrailsDomainClass sub, PersistentClass parent, Mappings mappings,
        String sessionFactoryBeanName) {
    evaluateMapping(sub);
    Mapping m = getMapping(parent.getMappedClass());
    Subclass subClass;
    boolean tablePerSubclass = m != null && !m.getTablePerHierarchy() && !m.isTablePerConcreteClass();
    boolean tablePerConcreteClass = m != null && m.isTablePerConcreteClass();
    if (tablePerSubclass) {
        subClass = new JoinedSubclass(parent);
    } else if (tablePerConcreteClass) {
        subClass = new UnionSubclass(parent);
    } else {
        subClass = new SingleTableSubclass(parent);
        // set the descriminator value as the name of the class. This is the
        // value used by Hibernate to decide what the type of the class is
        // to perform polymorphic queries
        Mapping subMapping = getMapping(sub);
        subClass.setDiscriminatorValue(
                subMapping != null && subMapping.getDiscriminator() != null ? subMapping.getDiscriminator()
                        : sub.getFullName());
        if (subMapping != null) {
            configureDerivedProperties(sub, subMapping);
        }
    }

    subClass.setEntityName(sub.getFullName());
    subClass.setJpaEntityName(unqualify(sub.getFullName()));

    parent.addSubclass(subClass);
    mappings.addClass(subClass);

    if (tablePerSubclass) {
        bindJoinedSubClass(sub, (JoinedSubclass) subClass, mappings, m, sessionFactoryBeanName);
    } else if (tablePerConcreteClass) {
        bindUnionSubclass(sub, (UnionSubclass) subClass, mappings, sessionFactoryBeanName);
    } else {
        bindSubClass(sub, subClass, mappings, sessionFactoryBeanName);
    }

    if (!sub.getSubClasses().isEmpty()) {
        // bind the sub classes
        bindSubClasses(sub, subClass, mappings, sessionFactoryBeanName);
    }
}

From source file:org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.java

License:Apache License

/**
 * Binds a sub class.//from w w  w .  ja v a 2 s .  c  om
 *
 * @param sub      The sub domain class instance
 * @param parent   The parent persistent class instance
 * @param mappings The mappings instance
 * @param sessionFactoryBeanName  the session factory bean name
 */
private static void bindSubClass(GrailsDomainClass sub, PersistentClass parent, Mappings mappings,
        String sessionFactoryBeanName) {
    evaluateMapping(sub);
    Mapping m = getMapping(parent.getMappedClass());
    Subclass subClass;
    boolean tablePerSubclass = m != null && !m.getTablePerHierarchy();
    if (tablePerSubclass) {
        subClass = new JoinedSubclass(parent);
    } else {
        subClass = new SingleTableSubclass(parent);
        // set the descriminator value as the name of the class. This is the
        // value used by Hibernate to decide what the type of the class is
        // to perform polymorphic queries
        Mapping subMapping = getMapping(sub);
        subClass.setDiscriminatorValue(
                subMapping != null && subMapping.getDiscriminator() != null ? subMapping.getDiscriminator()
                        : sub.getFullName());
    }

    subClass.setEntityName(sub.getFullName());
    parent.addSubclass(subClass);
    mappings.addClass(subClass);

    if (tablePerSubclass) {
        bindJoinedSubClass(sub, (JoinedSubclass) subClass, mappings, m, sessionFactoryBeanName);
    } else {
        bindSubClass(sub, subClass, mappings, sessionFactoryBeanName);
    }

    if (!sub.getSubClasses().isEmpty()) {
        // bind the sub classes
        bindSubClasses(sub, subClass, mappings, sessionFactoryBeanName);
    }
}

From source file:org.grails.orm.hibernate.cfg.AbstractGrailsDomainBinder.java

License:Apache License

/**
 * Binds a sub class./*from   w w w .j  a  v a2 s .  c  om*/
 *
 * @param sub      The sub domain class instance
 * @param parent   The parent persistent class instance
 * @param mappings The mappings instance
 * @param sessionFactoryBeanName  the session factory bean name
 */
protected void bindSubClass(HibernatePersistentEntity sub, PersistentClass parent, Mappings mappings,
        String sessionFactoryBeanName) {
    evaluateMapping(sub, defaultMapping);
    Mapping m = getMapping(parent.getMappedClass());
    Subclass subClass;
    boolean tablePerSubclass = m != null && !m.getTablePerHierarchy() && !m.isTablePerConcreteClass();
    boolean tablePerConcreteClass = m != null && m.isTablePerConcreteClass();
    final String fullName = sub.getName();
    if (tablePerSubclass) {
        subClass = new JoinedSubclass(parent);
    } else if (tablePerConcreteClass) {
        subClass = new UnionSubclass(parent);
    } else {
        subClass = new SingleTableSubclass(parent);
        // set the descriminator value as the name of the class. This is the
        // value used by Hibernate to decide what the type of the class is
        // to perform polymorphic queries
        Mapping subMapping = getMapping(sub);
        subClass.setDiscriminatorValue(
                subMapping != null && subMapping.getDiscriminator() != null ? subMapping.getDiscriminator()
                        : fullName);
        if (subMapping != null) {
            configureDerivedProperties(sub, subMapping);
        }
    }

    subClass.setEntityName(fullName);
    subClass.setJpaEntityName(unqualify(fullName));

    parent.addSubclass(subClass);
    mappings.addClass(subClass);

    if (tablePerSubclass) {
        bindJoinedSubClass(sub, (JoinedSubclass) subClass, mappings, m, sessionFactoryBeanName);
    } else if (tablePerConcreteClass) {
        bindUnionSubclass(sub, (UnionSubclass) subClass, mappings, sessionFactoryBeanName);
    } else {
        bindSubClass(sub, subClass, mappings, sessionFactoryBeanName);
    }

    final java.util.Collection<PersistentEntity> childEntities = sub.getMappingContext()
            .getDirectChildEntities(sub);
    if (!childEntities.isEmpty()) {
        // bind the sub classes
        bindSubClasses(sub, subClass, mappings, sessionFactoryBeanName);
    }
}

From source file:org.grails.orm.hibernate.cfg.GrailsDomainBinder.java

License:Apache License

/**
 * Binds a sub class./*from  ww  w  .  j a va  2  s.com*/
 *
 * @param sub      The sub domain class instance
 * @param parent   The parent persistent class instance
 * @param mappings The mappings instance
 * @param sessionFactoryBeanName  the session factory bean name
 */
protected void bindSubClass(HibernatePersistentEntity sub, PersistentClass parent,
        InFlightMetadataCollector mappings, String sessionFactoryBeanName) {
    evaluateMapping(sub, defaultMapping);
    Mapping m = getMapping(parent.getMappedClass());
    Subclass subClass;
    boolean tablePerSubclass = m != null && !m.getTablePerHierarchy() && !m.isTablePerConcreteClass();
    boolean tablePerConcreteClass = m != null && m.isTablePerConcreteClass();
    final String fullName = sub.getName();
    if (tablePerSubclass) {
        subClass = new JoinedSubclass(parent, this.metadataBuildingContext);
    } else if (tablePerConcreteClass) {
        subClass = new UnionSubclass(parent, this.metadataBuildingContext);
    } else {
        subClass = new SingleTableSubclass(parent, this.metadataBuildingContext);
        // set the descriminator value as the name of the class. This is the
        // value used by Hibernate to decide what the type of the class is
        // to perform polymorphic queries
        Mapping subMapping = getMapping(sub);
        DiscriminatorConfig discriminatorConfig = subMapping != null ? subMapping.getDiscriminator() : null;

        subClass.setDiscriminatorValue(discriminatorConfig != null && discriminatorConfig.getValue() != null
                ? discriminatorConfig.getValue()
                : fullName);

        if (subMapping != null) {
            configureDerivedProperties(sub, subMapping);
        }
    }

    subClass.setEntityName(fullName);
    subClass.setJpaEntityName(unqualify(fullName));

    parent.addSubclass(subClass);
    mappings.addEntityBinding(subClass);

    if (tablePerSubclass) {
        bindJoinedSubClass(sub, (JoinedSubclass) subClass, mappings, m, sessionFactoryBeanName);
    } else if (tablePerConcreteClass) {
        bindUnionSubclass(sub, (UnionSubclass) subClass, mappings, sessionFactoryBeanName);
    } else {
        bindSubClass(sub, subClass, mappings, sessionFactoryBeanName);
    }

    final java.util.Collection<PersistentEntity> childEntities = sub.getMappingContext()
            .getDirectChildEntities(sub);
    if (!childEntities.isEmpty()) {
        // bind the sub classes
        bindSubClasses(sub, subClass, mappings, sessionFactoryBeanName);
    }
}