微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javax.persistence.NamedNativeQuery的实例源码

项目:lams    文件JPAOverriddenAnnotationReader.java   
private NamednativeQueries getNamednativeQueries(Element tree,XMLContext.Default defaults) {
    List<NamednativeQuery> queries = (List<NamednativeQuery>) buildNamedQueries( tree,true,defaults );
    if ( defaults.canUseJavaAnnotations() ) {
        NamednativeQuery annotation = getPhysicalAnnotation( NamednativeQuery.class );
        addNamednativeQueryIfNeeded( annotation,queries );
        NamednativeQueries annotations = getPhysicalAnnotation( NamednativeQueries.class );
        if ( annotations != null ) {
            for ( NamednativeQuery current : annotations.value() ) {
                addNamednativeQueryIfNeeded( current,queries );
            }
        }
    }
    if ( queries.size() > 0 ) {
        AnnotationDescriptor ad = new AnnotationDescriptor( NamednativeQueries.class );
        ad.setValue( "value",queries.toArray( new NamednativeQuery[queries.size()] ) );
        return AnnotationFactory.create( ad );
    }
    else {
        return null;
    }
}
项目:lams    文件JPAOverriddenAnnotationReader.java   
private void addNamednativeQueryIfNeeded(NamednativeQuery annotation,List<NamednativeQuery> queries) {
    if ( annotation != null ) {
        String queryName = annotation.name();
        boolean present = false;
        for ( NamednativeQuery current : queries ) {
            if ( current.name().equals( queryName ) ) {
                present = true;
                break;
            }
        }
        if ( !present ) {
            queries.add( annotation );
        }
    }
}
项目: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 bindNativeQuery(org.hibernate.annotations.NamednativeQuery queryAnn,Mappings mappings) {
    if ( queryAnn == null ) return;
    //ResultSetMappingDeFinition mappingDeFinition = mappings.getResultSetMapping( queryAnn.resultSetMapping() );
    if ( BinderHelper.isEmptyAnnotationValue( queryAnn.name() ) ) {
        throw new AnnotationException( "A named query must have a name when used in class or package level" );
    }
    NamedsqlQueryDeFinition query;
    String resultSetMapping = queryAnn.resultSetMapping();
    if ( !BinderHelper.isEmptyAnnotationValue( resultSetMapping ) ) {
        //sql result set usage
        query = new NamedsqlQueryDeFinitionBuilder().setName( queryAnn.name() )
                .setQuery( queryAnn.query() )
                .setResultSetRef( resultSetMapping )
                .setQuerySpaces( null )
                .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( getFlushMode( queryAnn.flushMode() ) )
                .setCacheMode( getCacheMode( queryAnn.cacheMode() ) )
                .setReadOnly( queryAnn.readOnly() )
                .setComment( BinderHelper.isEmptyAnnotationValue( queryAnn.comment() ) ? null : queryAnn.comment() )
                .setParameterTypes( null )
                .setCallable( queryAnn.callable() )
                .createNamedQueryDeFinition();
    }
    else if ( !void.class.equals( queryAnn.resultClass() ) ) {
        //class mapping usage
        //FIXME should be done in a second pass due to entity name?
        final NativesqlQueryRootReturn entityQueryReturn =
                new NativesqlQueryRootReturn( "alias1",queryAnn.resultClass().getName(),new HashMap(),LockMode.READ );
        query = new NamedsqlQueryDeFinitionBuilder().setName( queryAnn.name() )
                .setQuery( queryAnn.query() )
                .setQueryReturns( new NativesqlQueryReturn[] {entityQueryReturn} )
                .setQuerySpaces( null )
                .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( getFlushMode( queryAnn.flushMode() ) )
                .setCacheMode( getCacheMode( queryAnn.cacheMode() ) )
                .setReadOnly( queryAnn.readOnly() )
                .setComment( BinderHelper.isEmptyAnnotationValue( queryAnn.comment() ) ? null : queryAnn.comment() )
                .setParameterTypes( null )
                .setCallable( queryAnn.callable() )
                .createNamedQueryDeFinition();
    }
    else {
        throw new NotYetImplementedException( "Pure native scalar queries are not yet supported" );
    }
    mappings.addsqlQuery( query.getName(),query );
    if ( LOG.isDebugEnabled() ) {
        LOG.debugf( "Binding named native query: %s => %s",query.getName(),queryAnn.query() );
    }
}
项目:lams    文件QueryBinder.java   
public static void bindNativeQueries(NamednativeQueries queriesAnn,Mappings mappings,boolean isDefault) {
    if ( queriesAnn == null ) return;
    for (NamednativeQuery q : queriesAnn.value()) {
        bindNativeQuery( q,mappings,isDefault );
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。