Java 类org.hibernate.annotations.Columns 实例源码

项目:lams    文件:JPAOverriddenAnnotationReader.java   
private Columns buildColumns(Element element) {
    List<Element> subelements = element.elements( "column" );
    List<Column> columns = new ArrayList<Column>( subelements.size() );
    for ( Element subelement : subelements ) {
        columns.add( getColumn( subelement, false, element ) );
    }
    if ( columns.size() > 0 ) {
        AnnotationDescriptor columnsDescr = new AnnotationDescriptor( Columns.class );
        columnsDescr.setValue( "columns", columns.toArray( new Column[columns.size()] ) );
        return AnnotationFactory.create( columnsDescr );
    }
    else {
        return null;
    }
}
项目:lams    文件:ColumnsBuilder.java   
public ColumnsBuilder extractMetadata() {
    columns = null;
    joinColumns = buildExplicitJoinColumns(property, inferredData);


    if ( property.isAnnotationPresent( Column.class ) || property.isAnnotationPresent( Formula.class ) ) {
        Column ann = property.getAnnotation( Column.class );
        Formula formulaAnn = property.getAnnotation( Formula.class );
        columns = Ejb3Column.buildColumnFromAnnotation(
                new Column[] { ann }, formulaAnn, nullability, propertyHolder, inferredData,
                entityBinder.getSecondaryTables(), mappings
        );
    }
    else if ( property.isAnnotationPresent( Columns.class ) ) {
        Columns anns = property.getAnnotation( Columns.class );
        columns = Ejb3Column.buildColumnFromAnnotation(
                anns.columns(), null,
                nullability, propertyHolder, inferredData, entityBinder.getSecondaryTables(),
                mappings
        );
    }

    //set default values if needed
    if ( joinColumns == null &&
            ( property.isAnnotationPresent( ManyToOne.class )
                    || property.isAnnotationPresent( OneToOne.class ) )
            ) {
        joinColumns = buildDefaultJoinColumnsForXToOne(property, inferredData);
    }
    else if ( joinColumns == null &&
            ( property.isAnnotationPresent( OneToMany.class )
                    || property.isAnnotationPresent( ElementCollection.class )
            ) ) {
        OneToMany oneToMany = property.getAnnotation( OneToMany.class );
        String mappedBy = oneToMany != null ?
                oneToMany.mappedBy() :
                "";
        joinColumns = Ejb3JoinColumn.buildJoinColumns(
                null,
                mappedBy, entityBinder.getSecondaryTables(),
                propertyHolder, inferredData.getPropertyName(), mappings
        );
    }
    else if ( joinColumns == null && property.isAnnotationPresent( org.hibernate.annotations.Any.class ) ) {
        throw new AnnotationException( "@Any requires an explicit @JoinColumn(s): "
                + BinderHelper.getPath( propertyHolder, inferredData ) );
    }
    if ( columns == null && !property.isAnnotationPresent( ManyToMany.class ) ) {
        //useful for collection of embedded elements
        columns = Ejb3Column.buildColumnFromAnnotation(
                null, null,
                nullability, propertyHolder, inferredData, entityBinder.getSecondaryTables(), mappings
        );
    }

    if ( nullability == Nullability.FORCED_NOT_NULL ) {
        //force columns to not null
        for (Ejb3Column col : columns ) {
            col.forceNotNull();
        }
    }
    return this;
}
项目:lams    文件:CustomizableColumns.java   
public Class<? extends Annotation> annotationType() {
    return Columns.class;
}