List of usage examples for org.hibernate.mapping Subclass setDiscriminatorValue
public void setDiscriminatorValue(String discriminatorValue)
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); } }