Java 类org.hibernate.mapping.Subclass 实例源码

项目:lams    文件:JoinedSubclassEntityPersister.java   
private Set<String> processPersistentClassHierarchy(
        PersistentClass persistentClass,
        boolean isBase,
        SessionFactoryImplementor factory,
        String[][] mapping) {

    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // collect all the class names that indicate that the "main table" of the given PersistentClass should be
    // included when one of the collected class names is used in TREAT
    final Set<String> classNames = new HashSet<String>();

    final Iterator itr = persistentClass.getDirectSubclasses();
    while ( itr.hasNext() ) {
        final Subclass subclass = (Subclass) itr.next();
        final Set<String> subclassSubclassNames = processPersistentClassHierarchy(
                subclass,
                false,
                factory,
                mapping
        );
        classNames.addAll( subclassSubclassNames );
    }

    classNames.add( persistentClass.getEntityName() );

    if ( ! isBase ) {
        MappedSuperclass msc = persistentClass.getSuperMappedSuperclass();
        while ( msc != null ) {
            classNames.add( msc.getMappedClass().getName() );
            msc = msc.getSuperMappedSuperclass();
        }

        associateSubclassNamesToSubclassTableIndexes( persistentClass, classNames, mapping, factory );
    }

    return classNames;
}
项目:cacheonix-core    文件:HbmBinder.java   
public static void bindSubclass(Element node, Subclass subclass, Mappings mappings,
        java.util.Map inheritedMetas) throws MappingException {

    bindClass( node, subclass, mappings, inheritedMetas );
    inheritedMetas = getMetas( node, inheritedMetas, true ); // get meta's from <subclass>

    if ( subclass.getEntityPersisterClass() == null ) {
        subclass.getRootClass()
                .setEntityPersisterClass( SingleTableEntityPersister.class );
    }

    log.info(
            "Mapping subclass: " + subclass.getEntityName() +
            " -> " + subclass.getTable().getName()
        );

    // properties
    createClassProperties( node, subclass, mappings, inheritedMetas );
}
项目:lams    文件:HbmBinder.java   
public static void bindSubclass(Element node, Subclass subclass, Mappings mappings,
        java.util.Map inheritedMetas) throws MappingException {

    bindClass( node, subclass, mappings, inheritedMetas );
    inheritedMetas = getMetas( node, inheritedMetas, true ); // get meta's from <subclass>

    if ( LOG.isDebugEnabled() ) {
        LOG.debugf( "Mapping subclass: %s -> %s", subclass.getEntityName(), subclass.getTable().getName() );
    }

    // properties
    createClassProperties( node, subclass, mappings, inheritedMetas );
}
项目:lams    文件:HbmBinder.java   
private static void handleSubclass(PersistentClass model, Mappings mappings, Element subnode,
        java.util.Map inheritedMetas) throws MappingException {
    Subclass subclass = new SingleTableSubclass( model );
    bindSubclass( subnode, subclass, mappings, inheritedMetas );
    model.addSubclass( subclass );
    mappings.addClass( subclass );
}
项目:cacheonix-core    文件:HbmBinder.java   
private static void handleSubclass(PersistentClass model, Mappings mappings, Element subnode,
        java.util.Map inheritedMetas) throws MappingException {
    Subclass subclass = new SingleTableSubclass( model );
    bindSubclass( subnode, subclass, mappings, inheritedMetas );
    model.addSubclass( subclass );
    mappings.addClass( subclass );
}
项目:cacheonix-core    文件:PersistentClassVisitorTest.java   
public void testProperCallbacks() {

        PersistentClassVisitorValidator vv = new PersistentClassVisitorValidator();

        new RootClass().accept(vv);
        new Subclass(new RootClass()).accept(vv);
        new JoinedSubclass(new RootClass()).accept(vv);
        new SingleTableSubclass(new RootClass()).accept(vv);
        new UnionSubclass(new RootClass()).accept(vv);

    }
项目:cagrid-core    文件:HibernateConfigTypesInformationResolver.java   
public Object getClassDiscriminatorValue(String classname) throws TypesInformationException {
    Object identifier = discriminators.get(classname);
    if (identifier == null) {
        PersistentClass clazz = configuration.getClassMapping(classname);
        if (clazz != null) {
            if (clazz instanceof Subclass) {
                Subclass sub = (Subclass) clazz;
                if (sub.isJoinedSubclass()) {
                    identifier = Integer.valueOf(sub.getSubclassId());
                } else {
                    identifier = getShortClassName(classname);
                }
            } else if (clazz instanceof RootClass) {
                RootClass root = (RootClass) clazz;
                if (root.getDiscriminator() == null) {
                    identifier = Integer.valueOf(root.getSubclassId());
                } else {
                    identifier = getShortClassName(classname);
                }
            }
        } else {
            throw new TypesInformationException("Class " + classname + " not found in hibernate configuration");
        }
        discriminators.put(classname, identifier);
    }
    return identifier;
}
项目:cagrid-core    文件:HibernateConfigTypesInformationResolver.java   
public Object getClassDiscriminatorValue(String classname) throws TypesInformationException {
    LOG.debug("Getting class discriminator value for " + classname);
    Object identifier = discriminators.get(classname);
    if (identifier == null) {
        PersistentClass clazz = configuration.getClassMapping(classname);
        if (clazz != null) {
            if (clazz instanceof Subclass) {
                Subclass sub = (Subclass) clazz;
                if (sub.isJoinedSubclass()) {
                    LOG.debug("\t" + classname + " is a joined subclass");
                    identifier = Integer.valueOf(sub.getSubclassId());
                } else {
                    LOG.debug("\t" + classname + " is a named subclass");
                    identifier = getShortClassName(classname);
                }
            } else if (clazz instanceof RootClass) {
                LOG.debug("\t" + classname + " is a root class");
                RootClass root = (RootClass) clazz;
                if (root.getDiscriminator() == null) {
                    identifier = Integer.valueOf(root.getSubclassId());
                } else {
                    identifier = getShortClassName(classname);
                }
            }
        } else {
            throw new TypesInformationException("Class " + classname + " not found in hibernate configuration");
        }
        discriminators.put(classname, identifier);
    }
    return identifier;
}
项目:cagrid-core    文件:HibernateConfigTypesInformationResolver.java   
public Object getClassDiscriminatorValue(String classname) throws TypesInformationException {
    Object identifier = discriminators.get(classname);
    if (identifier == null) {
        PersistentClass clazz = configuration.getClassMapping(classname);
        if (clazz != null) {
            if (clazz instanceof Subclass) {
                Subclass sub = (Subclass) clazz;
                if (sub.isJoinedSubclass()) {
                    identifier = Integer.valueOf(sub.getSubclassId());
                } else {
                    identifier = getShortClassName(classname);
                }
            } else if (clazz instanceof RootClass) {
                RootClass root = (RootClass) clazz;
                if (root.getDiscriminator() == null) {
                    identifier = Integer.valueOf(root.getSubclassId());
                } else {
                    identifier = getShortClassName(classname);
                }
            }
        } else {
            throw new TypesInformationException("Class " + classname + " not found in hibernate configuration");
        }
        discriminators.put(classname, identifier);
    }
    return identifier;
}
项目:openbravo-brazil    文件:OBTuplizer.java   
@Override
protected ProxyFactory buildProxyFactory(PersistentClass thePersistentClass, Getter idGetter,
    Setter idSetter) {
  final Class<?> mappedClass = thePersistentClass.getMappedClass();
  Check.isNotNull(mappedClass, "Mapped class of entity " + thePersistentClass.getEntityName()
      + " is null");

  // determine the id getter and setter methods from the proxy interface
  // (if
  // any)
  // determine all interfaces needed by the resulting proxy
  final HashSet<Object> proxyInterfaces = new HashSet<Object>();
  proxyInterfaces.add(HibernateProxy.class);

  final Class<?> proxyInterface = thePersistentClass.getProxyInterface();

  if (proxyInterface != null && !mappedClass.equals(proxyInterface)) {
    if (!proxyInterface.isInterface()) {
      throw new MappingException("proxy must be either an interface, or the class itself: "
          + getEntityName());
    }
    proxyInterfaces.add(proxyInterface);
  }

  if (mappedClass.isInterface()) {
    proxyInterfaces.add(mappedClass);
  }

  final Iterator<?> iter = thePersistentClass.getSubclassIterator();
  while (iter.hasNext()) {
    final Subclass subclass = (Subclass) iter.next();
    final Class<?> subclassProxy = subclass.getProxyInterface();
    final Class<?> subclassClass = subclass.getMappedClass();
    if (subclassProxy != null && !subclassClass.equals(subclassProxy)) {
      if (proxyInterface == null || !proxyInterface.isInterface()) {
        throw new MappingException("proxy must be either an interface, or the class itself: "
            + subclass.getEntityName());
      }
      proxyInterfaces.add(subclassProxy);
    }
  }

  final Method idGetterMethod = idGetter == null ? null : idGetter.getMethod();
  final Method idSetterMethod = idSetter == null ? null : idSetter.getMethod();

  final Method proxyGetIdentifierMethod = idGetterMethod == null || proxyInterface == null ? null
      : ReflectHelper.getMethod(proxyInterface, idGetterMethod);
  final Method proxySetIdentifierMethod = idSetterMethod == null || proxyInterface == null ? null
      : ReflectHelper.getMethod(proxyInterface, idSetterMethod);

  ProxyFactory pf = buildProxyFactoryInternal(thePersistentClass, idGetter, idSetter);
  try {
    pf.postInstantiate(getEntityName(), mappedClass, proxyInterfaces, proxyGetIdentifierMethod,
        proxySetIdentifierMethod,
        thePersistentClass.hasEmbeddedIdentifier() ? (CompositeType) thePersistentClass
            .getIdentifier().getType() : null);
  } catch (final HibernateException he) {
    log.warn("could not create proxy factory for:" + getEntityName(), he);
    pf = null;
  }
  return pf;
}
项目:cacheonix-core    文件:PersistentClassVisitorTest.java   
public Object accept(Subclass subclass) {
    return validate(Subclass.class, subclass);
}