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