/** * Binds the sub classes of a root class using table-per-heirarchy inheritance mapping * * @param domainClass The root domain class to bind * @param parent The parent class instance * @param mappings The mappings instance * @param sessionFactoryBeanName the session factory bean name */ protected void bindSubClasses(HibernatePersistentEntity domainClass, PersistentClass parent, Mappings mappings, String sessionFactoryBeanName) { final java.util.Collection<PersistentEntity> subClasses = domainClass.getMappingContext().getDirectChildEntities(domainClass); for (PersistentEntity sub : subClasses) { final Class javaClass = sub.getJavaClass(); if (javaClass.getSuperclass().equals(domainClass.getJavaClass())) { bindSubClass((HibernatePersistentEntity)sub, parent, mappings, sessionFactoryBeanName); } } }
protected Set<String> buildDiscriminatorSet(HibernatePersistentEntity domainClass) { Set<String> theSet = new HashSet<String>(); Mapping mapping = domainClass.getMapping().getMappedForm(); String discriminator = domainClass.getName(); if (mapping != null && mapping.getDiscriminator() != null) { DiscriminatorConfig discriminatorConfig = mapping.getDiscriminator(); if(discriminatorConfig.getValue() != null) { discriminator = discriminatorConfig.getValue(); } } Mapping rootMapping = getRootMapping(domainClass); String quote = "'"; if (rootMapping != null && rootMapping.getDatasources() != null) { DiscriminatorConfig discriminatorConfig = rootMapping.getDiscriminator(); if(discriminatorConfig != null && discriminatorConfig.getType() != null && !discriminatorConfig.getType().equals("string")) quote = ""; } theSet.add(quote + discriminator + quote); final java.util.Collection<PersistentEntity> childEntities = domainClass.getMappingContext().getDirectChildEntities(domainClass); for (PersistentEntity subClass : childEntities) { theSet.addAll(buildDiscriminatorSet((HibernatePersistentEntity) subClass)); } return theSet; }
root.setAbstract(entity.isAbstract()); final MappingContext mappingContext = entity.getMappingContext(); final java.util.Collection<PersistentEntity> children = mappingContext.getDirectChildEntities(entity); if (children.isEmpty()) { root.setPolymorphic(false);
final java.util.Collection<PersistentEntity> childEntities = sub.getMappingContext().getDirectChildEntities(sub); if (!childEntities.isEmpty()) {