Java 类org.hibernate.cfg.Mappings 实例源码

项目:lams    文件:CollectionBinder.java   
public SecondPass getSecondPass(
        final Ejb3JoinColumn[] fkJoinColumns,
        final Ejb3JoinColumn[] keyColumns,
        final Ejb3JoinColumn[] inverseColumns,
        final Ejb3Column[] elementColumns,
        final Ejb3Column[] mapKeyColumns,
        final Ejb3JoinColumn[] mapKeyManyToManyColumns,
        final boolean isEmbedded,
        final XProperty property,
        final XClass collType,
        final boolean ignoreNotFound,
        final boolean unique,
        final TableBinder assocTableBinder,
        final Mappings mappings) {
    return new CollectionSecondPass( mappings, collection ) {
        @Override
           public void secondPass(java.util.Map persistentClasses, java.util.Map inheritedMetas) throws MappingException {
            bindStarToManySecondPass(
                    persistentClasses, collType, fkJoinColumns, keyColumns, inverseColumns, elementColumns,
                    isEmbedded, property, unique, assocTableBinder, ignoreNotFound, mappings
            );
        }
    };
}
项目:lams    文件:CollectionBinder.java   
private static void bindCollectionSecondPass(
        Collection collValue,
        PersistentClass collectionEntity,
        Ejb3JoinColumn[] joinColumns,
        boolean cascadeDeleteEnabled,
        XProperty property,
        Mappings mappings) {
    try {
        BinderHelper.createSyntheticPropertyReference(
                joinColumns, collValue.getOwner(), collectionEntity, collValue, false, mappings
        );
    }
    catch (AnnotationException ex) {
        throw new AnnotationException( "Unable to map collection " + collectionEntity.getClassName() + "." + property.getName(), ex );
    }
    SimpleValue key = buildCollectionKey( collValue, joinColumns, cascadeDeleteEnabled, property, mappings );
    if ( property.isAnnotationPresent( ElementCollection.class ) && joinColumns.length > 0 ) {
        joinColumns[0].setJPA2ElementCollection( true );
    }
    TableBinder.bindFk( collValue.getOwner(), collectionEntity, joinColumns, key, false, mappings );
}
项目:lams    文件:QueryBinder.java   
public static void bindNamedStoredProcedureQuery(NamedStoredProcedureQuery annotation, Mappings mappings, boolean isDefault) {
    if ( annotation == null ) {
        return;
    }

    if ( BinderHelper.isEmptyAnnotationValue( annotation.name() ) ) {
        throw new AnnotationException( "A named query must have a name when used in class or package level" );
    }

    final NamedProcedureCallDefinition def = new NamedProcedureCallDefinition( annotation );

    if(isDefault){
        mappings.addDefaultNamedProcedureCallDefinition( def );
    } else{
        mappings.addNamedProcedureCallDefinition( def );
    }
    LOG.debugf( "Bound named stored procedure query : %s => %s", def.getRegisteredName(), def.getProcedureName() );
}
项目:cacheonix-core    文件:ComponentTest.java   
public void afterConfigurationBuilt(Mappings mappings, Dialect dialect) {
    super.afterConfigurationBuilt( mappings, dialect );
    // Oracle and Postgres do not have year() functions, so we need to
    // redefine the 'User.person.yob' formula
    //
    // consider temporary until we add the capability to define
    // mapping foprmulas which can use dialect-registered functions...
    PersistentClass user = mappings.getClass( User.class.getName() );
    org.hibernate.mapping.Property personProperty = user.getProperty( "person" );
    Component component = ( Component ) personProperty.getValue();
    Formula f = ( Formula ) component.getProperty( "yob" ).getValue().getColumnIterator().next();

    SQLFunction yearFunction = ( SQLFunction ) dialect.getFunctions().get( "year" );
    if ( yearFunction == null ) {
        // the dialect not know to support a year() function, so rely on the
        // ANSI SQL extract function
        f.setFormula( "extract( year from dob )");
    }
    else {
        List args = new ArrayList();
        args.add( "dob" );
        f.setFormula( yearFunction.render( args, null ) );
    }
}
项目:Portofino    文件:HibernateConfig.java   
public Configuration buildSessionFactory(Database database) {
    try {
        Configuration configuration = new Configuration();

        setupConnection(configuration);
        setupConfigurationProperties(configuration);

        Mappings mappings = configuration.createMappings();

        //Class Mapping
        classMapping(database, mappings);
        //One2Many Mapping
        o2mMapping(database, configuration, mappings);

        //TODO
        //mappings.addSecondPass(new ToOneFkSecondPass(?));

        return configuration;
    }
    catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        System.err.println("Initial SessionFactory creation failed." + ex);
        ex.printStackTrace();
        throw new ExceptionInInitializerError(ex);
    }
}
项目:Portofino    文件:HibernateConfig.java   
protected void setPKColumnGenerator(Mappings mappings, RootClass clazz, Table tab, com.manydesigns.portofino.model.database.Column column, SimpleValue id, Generator generator) {
    if (column.isAutoincrement()) {
        manageIdentityGenerator(mappings, tab, id);
    } else if (generator != null) {
        if (generator instanceof SequenceGenerator) {
            manageSequenceGenerator(mappings, tab, id, (SequenceGenerator) generator);
        } else if (generator instanceof
                            com.manydesigns.portofino.model.database.TableGenerator) {
            manageTableGenerator(mappings, tab, id,
                    (com.manydesigns.portofino.model.database.TableGenerator) generator);
        } else if (generator instanceof
                            com.manydesigns.portofino.model.database.IncrementGenerator){
            manageIncrementGenerator(mappings, tab, id, clazz.getEntityName());
        }
    }
}
项目:Portofino    文件:HibernateConfig.java   
private void manageIdentityGenerator(Mappings mappings, Table tab, SimpleValue id) {
    id.setIdentifierGeneratorStrategy(PortofinoIdentityGenerator.class.getName()); //"identity");
    Properties params = new Properties();
    params.put(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER, mappings.getObjectNameNormalizer());

    if (mappings.getSchemaName() != null) {
        params.setProperty(
                PersistentIdentifierGenerator.SCHEMA,
                mappings.getObjectNameNormalizer().normalizeIdentifierQuoting(mappings.getSchemaName()));
    }
    if (mappings.getCatalogName() != null) {
        params.setProperty(
                PersistentIdentifierGenerator.CATALOG,
                mappings.getObjectNameNormalizer().normalizeIdentifierQuoting(mappings.getCatalogName()));
    }
    id.setIdentifierGeneratorProperties(params);
    id.setNullValue(null);
}
项目:Portofino    文件:HibernateConfig.java   
private void manageTableGenerator(Mappings mappings, Table tab, SimpleValue id,
                                      com.manydesigns.portofino.model.database.TableGenerator generator) {
    id.setIdentifierGeneratorStrategy("enhanced-table");
    Properties params = new Properties();
    params.put(TableGenerator.TABLE,
                tab);
    params.put(TableGenerator.TABLE_PARAM,
                quoteIdentifier(generator.getTable()));
    params.put(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER,
                mappings.getObjectNameNormalizer());
    params.put(TableGenerator.SEGMENT_COLUMN_PARAM, quoteIdentifier(generator.getKeyColumn()));
    params.put(TableGenerator.SEGMENT_VALUE_PARAM, generator.getKeyValue());
    params.put(TableGenerator.VALUE_COLUMN_PARAM, quoteIdentifier(generator.getValueColumn()));
    params.setProperty(
                TableGenerator.SCHEMA, quoteIdentifier(tab.getSchema()));
    id.setIdentifierGeneratorProperties(params);
    id.setNullValue(null);
}
项目:manydesigns.cn    文件:HibernateConfig.java   
public Configuration buildSessionFactory(Database database) {
    try {
        Configuration configuration = new Configuration();

        setupConnection(configuration);
        setupConfigurationProperties(configuration);

        Mappings mappings = configuration.createMappings();

        //Class Mapping
        classMapping(database, mappings);
        //One2Many Mapping
        o2mMapping(database, configuration, mappings);
        //Many2One Mapping
        m2oMapping(database, configuration, mappings);

        return configuration;
    }
    catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        System.err.println("Initial SessionFactory creation failed." + ex);
        ex.printStackTrace();
        throw new ExceptionInInitializerError(ex);
    }
}
项目:manydesigns.cn    文件:HibernateConfig.java   
protected void setPKColumnGenerator(Mappings mappings, RootClass clazz, Table tab, com.manydesigns.portofino.model.database.Column column, SimpleValue id, Generator generator) {
    if (column.isAutoincrement()) {
        manageIdentityGenerator(mappings, tab, id);
    } else if (generator != null) {
        if (generator instanceof SequenceGenerator) {
            manageSequenceGenerator(mappings, tab, id, (SequenceGenerator) generator);
        } else if (generator instanceof
                            com.manydesigns.portofino.model.database.TableGenerator) {
            manageTableGenerator(mappings, tab, id,
                    (com.manydesigns.portofino.model.database.TableGenerator) generator);
        } else if (generator instanceof
                            com.manydesigns.portofino.model.database.IncrementGenerator){
            manageIncrementGenerator(mappings, tab, id, clazz.getEntityName());
        }
    }
}
项目:manydesigns.cn    文件:HibernateConfig.java   
private void manageTableGenerator(Mappings mappings, Table tab, SimpleValue id,
                                      com.manydesigns.portofino.model.database.TableGenerator generator) {
    id.setIdentifierGeneratorStrategy("enhanced-table");
    Properties params = new Properties();
    params.put(TableGenerator.TABLE,
                tab);
    params.put(TableGenerator.TABLE_PARAM,
                escapeName(generator.getTable()));
    params.put(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER,
                mappings.getObjectNameNormalizer());
    params.put(TableGenerator.SEGMENT_COLUMN_PARAM, escapeName(generator.getKeyColumn()));
    params.put(TableGenerator.SEGMENT_VALUE_PARAM, generator.getKeyValue());
    params.put(TableGenerator.VALUE_COLUMN_PARAM,escapeName(generator.getValueColumn()));
    params.setProperty(
                TableGenerator.SCHEMA,escapeName(tab.getSchema()));
    id.setIdentifierGeneratorProperties(params);
    id.setNullValue(null);
}
项目:lams    文件:ListBinder.java   
@Override
public SecondPass getSecondPass(
        final Ejb3JoinColumn[] fkJoinColumns,
        final Ejb3JoinColumn[] keyColumns,
        final Ejb3JoinColumn[] inverseColumns,
        final Ejb3Column[] elementColumns,
        Ejb3Column[] mapKeyColumns,
        final Ejb3JoinColumn[] mapKeyManyToManyColumns,
        final boolean isEmbedded,
        final XProperty property,
        final XClass collType,
        final boolean ignoreNotFound,
        final boolean unique,
        final TableBinder assocTableBinder,
        final Mappings mappings) {
    return new CollectionSecondPass( mappings, ListBinder.this.collection ) {
        @Override
           public void secondPass(Map persistentClasses, Map inheritedMetas)
                throws MappingException {
            bindStarToManySecondPass(
                    persistentClasses, collType, fkJoinColumns, keyColumns, inverseColumns, elementColumns,
                    isEmbedded, property, unique, assocTableBinder, ignoreNotFound, mappings
            );
            bindIndex( mappings );
        }
    };
}
项目:lams    文件:ListBinder.java   
private void bindIndex(final Mappings mappings) {
    if ( !indexColumn.isImplicit() ) {
        PropertyHolder valueHolder = PropertyHolderBuilder.buildPropertyHolder(
                this.collection,
                StringHelper.qualify( this.collection.getRole(), "key" ),
                null,
                null, propertyHolder, mappings
        );
        List list = (List) this.collection;
        if ( !list.isOneToMany() ) indexColumn.forceNotNull();
        indexColumn.setPropertyHolder( valueHolder );
        SimpleValueBinder value = new SimpleValueBinder();
        value.setColumns( new Ejb3Column[] { indexColumn } );
        value.setExplicitType( "integer" );
        value.setMappings( mappings );
        SimpleValue indexValue = value.make();
        indexColumn.linkWithValue( indexValue );
        list.setIndex( indexValue );
        list.setBaseIndex( indexColumn.getBase() );
        if ( list.isOneToMany() && !list.getKey().isNullable() && !list.isInverse() ) {
            String entityName = ( (OneToMany) list.getElement() ).getReferencedEntityName();
            PersistentClass referenced = mappings.getClass( entityName );
            IndexBackref ib = new IndexBackref();
            ib.setName( '_' + propertyName + "IndexBackref" );
            ib.setUpdateable( false );
            ib.setSelectable( false );
            ib.setCollectionRole( list.getRole() );
            ib.setEntityName( list.getOwner().getEntityName() );
            ib.setValue( list.getIndex() );
            referenced.addProperty( ib );
        }
    }
    else {
        Collection coll = this.collection;
        throw new AnnotationException(
                "List/array has to be annotated with an @OrderColumn (or @IndexColumn): "
                        + coll.getRole()
        );
    }
}
项目:lams    文件:TableBinder.java   
public static Table buildAndFillTable(
        String schema,
        String catalog,
        ObjectNameSource nameSource,
        ObjectNameNormalizer.NamingStrategyHelper namingStrategyHelper,
        boolean isAbstract,
        List<UniqueConstraintHolder> uniqueConstraints,
        String constraints,
        Table denormalizedSuperTable,
        Mappings mappings,
        String subselect) {
    return buildAndFillTable( schema, catalog, nameSource, namingStrategyHelper, isAbstract, uniqueConstraints, null, constraints
    , denormalizedSuperTable, mappings, subselect);
}
项目:lams    文件:TableBinder.java   
public static void addIndexes(Table hibTable, Index[] indexes, Mappings mappings) {
    for (Index index : indexes) {
        //no need to handle inSecondPass here since it is only called from EntityBinder
        mappings.addSecondPass(
                new IndexOrUniqueKeySecondPass( hibTable, index.name(), index.columnNames(), mappings )
        );
    }
}
项目:lams    文件:EntityBinder.java   
public EntityBinder(
        Entity ejb3Ann,
        org.hibernate.annotations.Entity hibAnn,
        XClass annotatedClass,
        PersistentClass persistentClass,
        Mappings mappings) {
    this.mappings = mappings;
    this.persistentClass = persistentClass;
    this.annotatedClass = annotatedClass;
    bindEjb3Annotation( ejb3Ann );
    bindHibernateAnnotation( hibAnn );
}
项目:lams    文件:EntityBinder.java   
private void bindJoinToPersistentClass(Join join, Ejb3JoinColumn[] ejb3JoinColumns, Mappings mappings) {
    SimpleValue key = new DependantValue( mappings, join.getTable(), persistentClass.getIdentifier() );
    join.setKey( key );
    setFKNameIfDefined( join );
    key.setCascadeDeleteEnabled( false );
    TableBinder.bindFk( persistentClass, null, ejb3JoinColumns, key, false, mappings );
    join.createPrimaryKey();
    join.createForeignKey();
    persistentClass.addJoin( join );
}
项目:lams    文件:MapBinder.java   
@Override
public SecondPass getSecondPass(
        final Ejb3JoinColumn[] fkJoinColumns,
        final Ejb3JoinColumn[] keyColumns,
        final Ejb3JoinColumn[] inverseColumns,
        final Ejb3Column[] elementColumns,
        final Ejb3Column[] mapKeyColumns,
        final Ejb3JoinColumn[] mapKeyManyToManyColumns,
        final boolean isEmbedded,
        final XProperty property,
        final XClass collType,
        final boolean ignoreNotFound,
        final boolean unique,
        final TableBinder assocTableBinder,
        final Mappings mappings) {
    return new CollectionSecondPass( mappings, MapBinder.this.collection ) {
        public void secondPass(Map persistentClasses, Map inheritedMetas)
                throws MappingException {
            bindStarToManySecondPass(
                    persistentClasses, collType, fkJoinColumns, keyColumns, inverseColumns, elementColumns,
                    isEmbedded, property, unique, assocTableBinder, ignoreNotFound, mappings
            );
            bindKeyFromAssociationTable(
                    collType, persistentClasses, mapKeyPropertyName, property, isEmbedded, mappings,
                    mapKeyColumns, mapKeyManyToManyColumns,
                    inverseColumns != null ? inverseColumns[0].getPropertyName() : null
            );
        }
    };
}
项目:lams    文件:QueryBinder.java   
public static void bindQuery(NamedQuery queryAnn, Mappings mappings, boolean isDefault) {
    if ( queryAnn == null ) return;
    if ( BinderHelper.isEmptyAnnotationValue( queryAnn.name() ) ) {
        throw new AnnotationException( "A named query must have a name when used in class or package level" );
    }
    //EJBQL Query
    QueryHintDefinition hints = new QueryHintDefinition( queryAnn.hints() );
    String queryName = queryAnn.query();
    NamedQueryDefinition queryDefinition = new NamedQueryDefinitionBuilder( queryAnn.name() )
            .setLockOptions( hints.determineLockOptions( queryAnn ) )
            .setQuery( queryName )
            .setCacheable( hints.getBoolean( queryName, QueryHints.CACHEABLE ) )
            .setCacheRegion( hints.getString( queryName, QueryHints.CACHE_REGION ) )
            .setTimeout( hints.getTimeout( queryName ) )
            .setFetchSize( hints.getInteger( queryName, QueryHints.FETCH_SIZE ) )
            .setFlushMode( hints.getFlushMode( queryName ) )
            .setCacheMode( hints.getCacheMode( queryName ) )
            .setReadOnly( hints.getBoolean( queryName, QueryHints.READ_ONLY ) )
            .setComment( hints.getString( queryName, QueryHints.COMMENT ) )
            .setParameterTypes( null )
            .createNamedQueryDefinition();

    if ( isDefault ) {
        mappings.addDefaultQuery( queryDefinition.getName(), queryDefinition );
    }
    else {
        mappings.addQuery( queryDefinition.getName(), queryDefinition );
    }
    if ( LOG.isDebugEnabled() ) {
        LOG.debugf( "Binding named query: %s => %s", queryDefinition.getName(), queryDefinition.getQueryString() );
    }
}
项目:lams    文件:QueryBinder.java   
public static void bindNativeQueries(
        org.hibernate.annotations.NamedNativeQueries queriesAnn, Mappings mappings
) {
    if ( queriesAnn == null ) return;
    for (org.hibernate.annotations.NamedNativeQuery q : queriesAnn.value()) {
        bindNativeQuery( q, mappings );
    }
}
项目:lams    文件:QueryBinder.java   
public static void bindQuery(org.hibernate.annotations.NamedQuery queryAnn, Mappings mappings) {
    if ( queryAnn == null ) return;
    if ( BinderHelper.isEmptyAnnotationValue( queryAnn.name() ) ) {
        throw new AnnotationException( "A named query must have a name when used in class or package level" );
    }
    FlushMode flushMode;
    flushMode = getFlushMode( queryAnn.flushMode() );

    NamedQueryDefinition query = new NamedQueryDefinitionBuilder().setName( queryAnn.name() )
            .setQuery( queryAnn.query() )
            .setCacheable( queryAnn.cacheable() )
            .setCacheRegion(
                    BinderHelper.isEmptyAnnotationValue( queryAnn.cacheRegion() ) ?
                            null :
                            queryAnn.cacheRegion()
            )
            .setTimeout( queryAnn.timeout() < 0 ? null : queryAnn.timeout() )
            .setFetchSize( queryAnn.fetchSize() < 0 ? null : queryAnn.fetchSize() )
            .setFlushMode( flushMode )
            .setCacheMode( getCacheMode( queryAnn.cacheMode() ) )
            .setReadOnly( queryAnn.readOnly() )
            .setComment( BinderHelper.isEmptyAnnotationValue( queryAnn.comment() ) ? null : queryAnn.comment() )
            .setParameterTypes( null )
            .createNamedQueryDefinition();

    mappings.addQuery( query.getName(), query );
    if ( LOG.isDebugEnabled() ) {
        LOG.debugf( "Binding named query: %s => %s", query.getName(), query.getQueryString() );
    }
}
项目:lams    文件:QueryBinder.java   
public static void bindSqlResultsetMappings(SqlResultSetMappings ann, Mappings mappings, boolean isDefault) {
    if ( ann == null ) return;
    for (SqlResultSetMapping rs : ann.value()) {
        //no need to handle inSecondPass
        mappings.addSecondPass( new ResultsetMappingSecondPass( rs, mappings, true ) );
    }
}
项目:lams    文件:PersistentTableBulkIdStrategy.java   
@Override
public void prepare(
        JdbcServices jdbcServices,
        JdbcConnectionAccess connectionAccess,
        Mappings mappings,
        Mapping mapping,
        Map settings) {
    this.catalog = ConfigurationHelper.getString(
            CATALOG,
            settings,
            ConfigurationHelper.getString( AvailableSettings.DEFAULT_CATALOG, settings )
    );
    this.schema = ConfigurationHelper.getString(
            SCHEMA,
            settings,
            ConfigurationHelper.getString( AvailableSettings.DEFAULT_SCHEMA, settings )
    );
    this.cleanUpTables = ConfigurationHelper.getBoolean( CLEAN_UP_ID_TABLES, settings, false );

    final Iterator<PersistentClass> entityMappings = mappings.iterateClasses();
    final List<Table> idTableDefinitions = new ArrayList<Table>();
    while ( entityMappings.hasNext() ) {
        final PersistentClass entityMapping = entityMappings.next();
        final Table idTableDefinition = generateIdTableDefinition( entityMapping );
        idTableDefinitions.add( idTableDefinition );
    }
    exportTableDefinitions( idTableDefinitions, jdbcServices, connectionAccess, mappings, mapping );
}
项目:cacheonix-core    文件:CompositeElementTest.java   
public void afterConfigurationBuilt(Mappings mappings, Dialect dialect) {
    super.afterConfigurationBuilt( mappings, dialect );
    Collection children = mappings.getCollection( Parent.class.getName() + ".children" );
    Component childComponents = ( Component ) children.getElement();
    Formula f = ( Formula ) childComponents.getProperty( "bioLength" ).getValue().getColumnIterator().next();

    SQLFunction lengthFunction = ( SQLFunction ) dialect.getFunctions().get( "length" );
    if ( lengthFunction != null ) {
        ArrayList args = new ArrayList();
        args.add( "bio" );
        f.setFormula( lengthFunction.render( args, null ) );
    }
}
项目:Portofino    文件:HibernateConfig.java   
private Mappings classMapping(Database database, Mappings mappings) {

        for (Schema schema : database.getSchemas()) {
            for (com.manydesigns.portofino.model.database.Table aTable :
                    schema.getTables()) {
                logger.debug("Class - {}", aTable.getQualifiedName());
                com.manydesigns.portofino.model.database.PrimaryKey primaryKey =
                        aTable.getPrimaryKey();
                if (primaryKey == null) {
                    logger.debug("Skipping table without primary key: {}",
                            aTable.getQualifiedName());
                    continue;
                }
                if (!primaryKey.isValid()) {
                    logger.debug("Skipping table with invalid primary key: {}",
                            aTable.getQualifiedName());
                    continue;
                }
                RootClass clazz = createTableMapping(mappings, aTable);
                if(clazz != null) {
                    mappings.addClass(clazz);
                    mappings.addImport(clazz.getEntityName(), clazz.getEntityName());
                }
            }
        }
        return mappings;
    }
项目:Portofino    文件:HibernateConfig.java   
private void o2mMapping(Database database, Configuration configuration, Mappings mappings) {
    for (Schema schema : database.getSchemas()) {
        for (com.manydesigns.portofino.model.database.Table aTable :
                schema.getTables()) {
            for (ForeignKey rel : aTable.getOneToManyRelationships()) {
                 logger.debug(MessageFormat.format("One to many - {0} {1}",
                            aTable.getQualifiedName(), rel.getName()));
                createO2M(configuration, mappings, rel);
            }
        }
    }
}
项目:Portofino    文件:HibernateConfig.java   
protected Column createColumn(Mappings mappings,
                            Table tab,
                            com.manydesigns.portofino.model.database.Column column) {
    Column col = new Column();
    col.setName(quoteIdentifier(column.getColumnName()));
    if(column.getLength() != null) {
        col.setLength(column.getLength());
        col.setPrecision(column.getLength());
    }
    if(column.getScale() != null) {
        col.setScale(column.getScale());
    }
    col.setNullable(column.isNullable());
    String columnType = column.getColumnType();
    int jdbcType = column.getJdbcType();

    col.setSqlTypeCode(jdbcType);
    col.setSqlType(columnType);

    SimpleValue value = new SimpleValue(mappings, tab);
    if (!setHibernateType(value, column)) {
        logger.error("Skipping column {}", column.getQualifiedName());
        return null;
    }

    value.addColumn(col);
    tab.addColumn(col);
    mappings.addColumnBinding(column.getColumnName(), col, tab);

    return col;
}
项目:Portofino    文件:HibernateConfig.java   
private void manageIncrementGenerator(Mappings mappings, Table tab, SimpleValue id, String entityName) {
    id.setIdentifierGeneratorStrategy("increment");
    Properties params = new Properties();
    params.put(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER,
            mappings.getObjectNameNormalizer());
    params.setProperty(PersistentIdentifierGenerator.SCHEMA, quoteIdentifier(tab.getSchema()));
    params.put(IncrementGenerator.ENTITY_NAME,
            entityName);
    id.setIdentifierGeneratorProperties(params);
    id.setNullValue(null);
}
项目:manydesigns.cn    文件:HibernateConfig.java   
private Mappings classMapping(Database database, Mappings mappings) {

        for (Schema schema : database.getSchemas()) {
            for (com.manydesigns.portofino.model.database.Table aTable :
                    schema.getTables()) {
                logger.debug("Class - {}", aTable.getQualifiedName());
                com.manydesigns.portofino.model.database.PrimaryKey primaryKey =
                        aTable.getPrimaryKey();
                if (primaryKey == null) {
                    logger.debug("Skipping table without primary key: {}",
                            aTable.getQualifiedName());
                    continue;
                }
                if (!primaryKey.isValid()) {
                    logger.debug("Skipping table with invalid primary key: {}",
                            aTable.getQualifiedName());
                    continue;
                }
                RootClass clazz = createTableMapping(mappings, aTable);
                if(clazz != null) {
                    mappings.addClass(clazz);
                    mappings.addImport(clazz.getEntityName(), clazz.getEntityName());
                }
            }
        }
        return mappings;
    }
项目:manydesigns.cn    文件:HibernateConfig.java   
private void m2oMapping(Database database, Configuration configuration, Mappings mappings) {
    for (Schema schema : database.getSchemas()) {
        for (com.manydesigns.portofino.model.database.Table aTable :
                schema.getTables()) {
            for (ForeignKey rel : aTable.getForeignKeys()) {
                logger.debug(MessageFormat.format("Many to one - {0} {1}",
                        aTable.getQualifiedName(), rel.getName()));
                createM2O(configuration, mappings, rel);
            }
        }
    }
}
项目:manydesigns.cn    文件:HibernateConfig.java   
private void o2mMapping(Database database, Configuration configuration, Mappings mappings) {
    for (Schema schema : database.getSchemas()) {
        for (com.manydesigns.portofino.model.database.Table aTable :
                schema.getTables()) {
            for (ForeignKey rel : aTable.getOneToManyRelationships()) {
                 logger.debug(MessageFormat.format("One to many - {0} {1}",
                            aTable.getQualifiedName(), rel.getName()));
                createO2M(configuration, mappings, rel);
            }
        }
    }
}
项目:manydesigns.cn    文件:HibernateConfig.java   
protected Column createColumn(Mappings mappings,
                            Table tab,
                            com.manydesigns.portofino.model.database.Column column) {
    Column col = new Column();
    col.setName(escapeName(column.getColumnName()));
    col.setLength(column.getLength());
    col.setPrecision(column.getLength());
    col.setScale(column.getScale());
    col.setNullable(column.isNullable());
    String columnType = column.getColumnType();
    int jdbcType = column.getJdbcType();

    col.setSqlTypeCode(jdbcType);
    col.setSqlType(columnType);

    SimpleValue value = new SimpleValue(mappings, tab);
    if (!setHibernateType(value, column, column.getActualJavaType(), jdbcType)) {
        logger.error("Skipping column {}", column.getQualifiedName());
        return null;
    }

    value.addColumn(col);
    tab.addColumn(col);
    mappings.addColumnBinding(column.getColumnName(), col, tab);

    return col;
}
项目:manydesigns.cn    文件:HibernateConfig.java   
private void manageIdentityGenerator(Mappings mappings, Table tab,
                                      SimpleValue id) {
    id.setIdentifierGeneratorStrategy("identity");
    Properties params = new Properties();
    params.put(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER,
                mappings.getObjectNameNormalizer());

    params.setProperty(
                PersistentIdentifierGenerator.SCHEMA,
                escapeName(tab.getSchema()));
    id.setIdentifierGeneratorProperties(params);
    id.setNullValue(null);
}
项目:manydesigns.cn    文件:HibernateConfig.java   
private void manageSequenceGenerator(Mappings mappings, Table tab,
                                      SimpleValue id, SequenceGenerator generator) {
    id.setIdentifierGeneratorStrategy
            ("enhanced-sequence");
    Properties params = new Properties();
    params.put(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER,
                mappings.getObjectNameNormalizer());
    params.put(SequenceStyleGenerator.SEQUENCE_PARAM,
                escapeName(generator.getName()));
    params.setProperty(
            SequenceStyleGenerator.SCHEMA,
            escapeName(tab.getSchema()));
    id.setIdentifierGeneratorProperties(params);
    id.setNullValue(null);
}
项目:manydesigns.cn    文件:HibernateConfig.java   
private void manageIncrementGenerator(Mappings mappings, Table tab, SimpleValue id, String entityName) {
    id.setIdentifierGeneratorStrategy("increment");
    Properties params = new Properties();
    params.put(PersistentIdentifierGenerator.IDENTIFIER_NORMALIZER,
            mappings.getObjectNameNormalizer());
    params.setProperty(PersistentIdentifierGenerator.SCHEMA, escapeName(tab.getSchema()));
    params.put(IncrementGenerator.ENTITY_NAME,
            entityName);
    id.setIdentifierGeneratorProperties(params);
    id.setNullValue(null);
}
项目:lightblue-rdbms    文件:RDBMSJDBCBinder.java   
public RDBMSJDBCBinder(RDBMSConfiguration rdbmsConfiguration, Settings settings, Mappings mappings, ReverseEngineeringStrategy revEngStrategy) {
    super(rdbmsConfiguration,settings,mappings,revEngStrategy);
    this.cfg = rdbmsConfiguration;
    this.settings = settings;
    this.mappings = mappings;
    this.revEngStrategy = revEngStrategy;
}
项目:lams    文件:CollectionBinder.java   
protected Mappings getMappings() {
    return mappings;
}
项目:lams    文件:CollectionBinder.java   
public void setMappings(Mappings mappings) {
    this.mappings = mappings;
}
项目:lams    文件:CollectionBinder.java   
/**
 * return true if it's a Fk, false if it's an association table
 */
protected boolean bindStarToManySecondPass(
        Map persistentClasses,
        XClass collType,
        Ejb3JoinColumn[] fkJoinColumns,
        Ejb3JoinColumn[] keyColumns,
        Ejb3JoinColumn[] inverseColumns,
        Ejb3Column[] elementColumns,
        boolean isEmbedded,
        XProperty property,
        boolean unique,
        TableBinder associationTableBinder,
        boolean ignoreNotFound,
        Mappings mappings) {
    PersistentClass persistentClass = (PersistentClass) persistentClasses.get( collType.getName() );
    boolean reversePropertyInJoin = false;
    if ( persistentClass != null && StringHelper.isNotEmpty( this.mappedBy ) ) {
        try {
            reversePropertyInJoin = 0 != persistentClass.getJoinNumber(
                    persistentClass.getRecursiveProperty( this.mappedBy )
            );
        }
        catch (MappingException e) {
            StringBuilder error = new StringBuilder( 80 );
            error.append( "mappedBy reference an unknown target entity property: " )
                    .append( collType ).append( "." ).append( this.mappedBy )
                    .append( " in " )
                    .append( collection.getOwnerEntityName() )
                    .append( "." )
                    .append( property.getName() );
            throw new AnnotationException( error.toString() );
        }
    }
    if ( persistentClass != null
            && !reversePropertyInJoin
            && oneToMany
            && !this.isExplicitAssociationTable
            && ( joinColumns[0].isImplicit() && !BinderHelper.isEmptyAnnotationValue( this.mappedBy ) //implicit @JoinColumn
            || !fkJoinColumns[0].isImplicit() ) //this is an explicit @JoinColumn
            ) {
        //this is a Foreign key
        bindOneToManySecondPass(
                getCollection(),
                persistentClasses,
                fkJoinColumns,
                collType,
                cascadeDeleteEnabled,
                ignoreNotFound,
                mappings,
                inheritanceStatePerClass
        );
        return true;
    }
    else {
        //this is an association table
        bindManyToManySecondPass(
                this.collection,
                persistentClasses,
                keyColumns,
                inverseColumns,
                elementColumns,
                isEmbedded, collType,
                ignoreNotFound, unique,
                cascadeDeleteEnabled,
                associationTableBinder,
                property,
                propertyHolder,
                mappings
        );
        return false;
    }
}
项目:lams    文件:CollectionBinder.java   
protected void bindOneToManySecondPass(
        Collection collection,
        Map persistentClasses,
        Ejb3JoinColumn[] fkJoinColumns,
        XClass collectionType,
        boolean cascadeDeleteEnabled,
        boolean ignoreNotFound,
        Mappings mappings,
        Map<XClass, InheritanceState> inheritanceStatePerClass) {

    final boolean debugEnabled = LOG.isDebugEnabled();
    if ( debugEnabled ) {
        LOG.debugf( "Binding a OneToMany: %s.%s through a foreign key", propertyHolder.getEntityName(), propertyName );
    }
    org.hibernate.mapping.OneToMany oneToMany = new org.hibernate.mapping.OneToMany( mappings, collection.getOwner() );
    collection.setElement( oneToMany );
    oneToMany.setReferencedEntityName( collectionType.getName() );
    oneToMany.setIgnoreNotFound( ignoreNotFound );

    String assocClass = oneToMany.getReferencedEntityName();
    PersistentClass associatedClass = (PersistentClass) persistentClasses.get( assocClass );
    if ( jpaOrderBy != null ) {
        final String orderByFragment = buildOrderByClauseFromHql(
                jpaOrderBy.value(),
                associatedClass,
                collection.getRole()
        );
        if ( StringHelper.isNotEmpty( orderByFragment ) ) {
            collection.setOrderBy( orderByFragment );
        }
    }

    if ( mappings == null ) {
        throw new AssertionFailure(
                "CollectionSecondPass for oneToMany should not be called with null mappings"
        );
    }
    Map<String, Join> joins = mappings.getJoins( assocClass );
    if ( associatedClass == null ) {
        throw new MappingException(
                "Association references unmapped class: " + assocClass
        );
    }
    oneToMany.setAssociatedClass( associatedClass );
    for (Ejb3JoinColumn column : fkJoinColumns) {
        column.setPersistentClass( associatedClass, joins, inheritanceStatePerClass );
        column.setJoins( joins );
        collection.setCollectionTable( column.getTable() );
    }
    if ( debugEnabled ) {
        LOG.debugf( "Mapping collection: %s -> %s", collection.getRole(), collection.getCollectionTable().getName() );
    }
    bindFilters( false );
    bindCollectionSecondPass( collection, null, fkJoinColumns, cascadeDeleteEnabled, property, mappings );
    if ( !collection.isInverse()
            && !collection.getKey().isNullable() ) {
        // for non-inverse one-to-many, with a not-null fk, add a backref!
        String entityName = oneToMany.getReferencedEntityName();
        PersistentClass referenced = mappings.getClass( entityName );
        Backref prop = new Backref();
        prop.setName( '_' + fkJoinColumns[0].getPropertyName() + '_' + fkJoinColumns[0].getLogicalColumnName() + "Backref" );
        prop.setUpdateable( false );
        prop.setSelectable( false );
        prop.setCollectionRole( collection.getRole() );
        prop.setEntityName( collection.getOwner().getEntityName() );
        prop.setValue( collection.getKey() );
        referenced.addProperty( prop );
    }
}