@SuppressWarnings({ "UnnecessaryUnboxing" }) private ParameterMetadata buildNativeSQLParameterMetadata(String sqlString) { ParamLocationRecognizer recognizer = ParamLocationRecognizer.parseLocations( sqlString ); OrdinalParameterDescriptor[] ordinalDescriptors = new OrdinalParameterDescriptor[ recognizer.getOrdinalParameterLocationList().size() ]; for ( int i = 0; i < recognizer.getOrdinalParameterLocationList().size(); i++ ) { final Integer position = ( Integer ) recognizer.getOrdinalParameterLocationList().get( i ); ordinalDescriptors[i] = new OrdinalParameterDescriptor( i, null, position.intValue() ); } Iterator itr = recognizer.getNamedParameterDescriptionMap().entrySet().iterator(); Map<String,NamedParameterDescriptor> namedParamDescriptorMap = new HashMap<String,NamedParameterDescriptor>(); while( itr.hasNext() ) { final Map.Entry entry = ( Map.Entry ) itr.next(); final String name = ( String ) entry.getKey(); final ParamLocationRecognizer.NamedParameterDescription description = ( ParamLocationRecognizer.NamedParameterDescription ) entry.getValue(); namedParamDescriptorMap.put( name , new NamedParameterDescriptor( name, null, description.buildPositionsArray(), description.isJpaStyle() ) ); } return new ParameterMetadata( ordinalDescriptors, namedParamDescriptorMap ); }
@SuppressWarnings({ "UnnecessaryUnboxing" }) private ParameterMetadata buildNativeSQLParameterMetadata(String sqlString) { ParamLocationRecognizer recognizer = ParamLocationRecognizer.parseLocations( sqlString ); OrdinalParameterDescriptor[] ordinalDescriptors = new OrdinalParameterDescriptor[ recognizer.getOrdinalParameterLocationList().size() ]; for ( int i = 0; i < recognizer.getOrdinalParameterLocationList().size(); i++ ) { final Integer position = ( Integer ) recognizer.getOrdinalParameterLocationList().get( i ); ordinalDescriptors[i] = new OrdinalParameterDescriptor( i, null, position.intValue() ); } Iterator itr = recognizer.getNamedParameterDescriptionMap().entrySet().iterator(); Map<String,NamedParameterDescriptor> namedParamDescriptorMap = new HashMap<String,NamedParameterDescriptor>(); while( itr.hasNext() ) { final Map.Entry entry = ( Map.Entry ) itr.next(); final String name = ( String ) entry.getKey(); final ParamLocationRecognizer.NamedParameterDescription description = ( ParamLocationRecognizer.NamedParameterDescription ) entry.getValue(); namedParamDescriptorMap.put( name , new NamedParameterDescriptor( name, null, description.buildPositionsArray(), description.isJpaStyle() ) ); } return new ParameterMetadata( ordinalDescriptors, namedParamDescriptorMap ); }
return new ParameterMetadata( ordinalParamDescriptors, namedParamDescriptorMap );
return new ParameterMetadata( ordinalParamDescriptors, namedParamDescriptorMap );
parameterMetadata = new ParameterMetadata( null, null ); returnMetadata = null;
parameterMetadata = new ParameterMetadata( null, null ); returnMetadata = null;
@Override public ParameterMetadata buildParameterMetadata(String nativeQuery) { PreparedStatement preparedStatement = session.prepare( nativeQuery ); ColumnDefinitions columnDefinitions = preparedStatement.getVariables(); OrdinalParameterDescriptor[] ordinalDescriptors = new OrdinalParameterDescriptor[columnDefinitions.size()]; if ( columnDefinitions.size() > 0 ) { // the cassandra metadata will give us the CQL type, but the type conversion system only goes // in hibernate->cassandra direction, so we can't turn it back into the required hibernate type. // instead we rely on the cached hibernate metadata from schema creation time String tableName = columnDefinitions.getTable( 0 ); Table table = metaDataCache.get( tableName ); for ( ColumnDefinitions.Definition definition : columnDefinitions ) { String name = definition.getName(); Column column = table.getColumn( Identifier.toIdentifier( name ) ); Type hibernateType = column.getValue().getType(); // cassandra side index is 0-based, hibernate side index is 1-based int index = columnDefinitions.getIndexOf( name ); ordinalDescriptors[index] = new OrdinalParameterDescriptor( index + 1, hibernateType, 0 ); } } return new ParameterMetadata( ordinalDescriptors, null ); } }