/** * Convenience method for creating a param location recognizer and * initiating the parse. * * @param query The query to be parsed for parameter locations. * @param sessionFactory * @return The generated recognizer, with journaled location info. */ public static ParamLocationRecognizer parseLocations( String query, SessionFactoryImplementor sessionFactory) { final ParamLocationRecognizer recognizer = new ParamLocationRecognizer( sessionFactory.getSessionFactoryOptions().jdbcStyleParamsZeroBased() ? 0 : 1 ); ParameterParser.parse( query, recognizer ); return recognizer; }
/** * Convenience method for creating a param location recognizer and * initiating the parse. * * @param query The query to be parsed for parameter locations. * @return The generated recognizer, with journaled location info. */ public static ParamLocationRecognizer parseLocations(String query) { ParamLocationRecognizer recognizer = new ParamLocationRecognizer(); ParameterParser.parse( query, recognizer ); return recognizer; }
/** * Convenience method for creating a param location recognizer and * initiating the parse. * * @param query The query to be parsed for parameter locations. * @return The generated recognizer, with journaled location info. */ public static ParamLocationRecognizer parseLocations(String query) { ParamLocationRecognizer recognizer = new ParamLocationRecognizer(); ParameterParser.parse( query, recognizer ); return recognizer; }
@Override public ParameterMetadataImpl buildParameterMetadata(String nativeQuery) { // At the moment we don't care about JDBC base count for positional parameters because // we don't have a dialect that supports them. // After a quick inspection it seems that only with Neo4j would be easy to make it work, // and even in that scenario I'm not sure it will matter. // I think it makes sense to keep track of the JPA compliance problems in separate issues. // In this case after solving OGM-1407 int jdbcStyleOrdinalCountBase = 0; ParamLocationRecognizer recognizer = new ParamLocationRecognizer( jdbcStyleOrdinalCountBase ); parseQueryParameters( nativeQuery, recognizer ); recognizer.complete(); final Map<Integer, OrdinalParameterDescriptor> ordinalDescriptors = recognizer.getOrdinalParameterDescriptionMap(); final Map<String, NamedParameterDescriptor> namedDescriptors = recognizer.getNamedParameterDescriptionMap(); return new ParameterMetadataImpl( ordinalDescriptors, namedDescriptors ); }