/** * Delegates to {@link TypeConfiguration#resolveSqlExpressableType} * * @implSpec Defined as final since the whole point of this base class is to support * this method via templating. Subclasses should instead implement {@link #createBinder} * and {@link #createExtractor}. */ @Override @SuppressWarnings("unchecked") public final SqlExpressableType getSqlExpressableType( BasicJavaDescriptor javaTypeDescriptor, TypeConfiguration typeConfiguration) { return typeConfiguration.resolveSqlExpressableType( this, javaTypeDescriptor, jtd -> { final JdbcValueBinder binder = createBinder( jtd, typeConfiguration ); final JdbcValueExtractor extractor = createExtractor( jtd, typeConfiguration ); return new StandardSqlExpressableTypeImpl( jtd, this, extractor, binder ); } ); }