All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.easy.query.api.proxy.entity.select.impl.EasySelectManyQueryable Maven / Gradle / Ivy

There is a newer version: 2.0.106
Show newest version
//package com.easy.query.api.proxy.entity.select.impl;
//
//import com.easy.query.api.proxy.base.ListProxy;
//import com.easy.query.api.proxy.entity.select.EntityQueryable;
//import com.easy.query.api.proxy.entity.select.EntityQueryable2;
//import com.easy.query.api.proxy.sql.ProxyFilter;
//import com.easy.query.api.proxy.sql.ProxySelector;
//import com.easy.query.core.api.dynamic.sort.ObjectSort;
//import com.easy.query.core.api.pagination.EasyPageResult;
//import com.easy.query.core.basic.api.select.ClientQueryable;
//import com.easy.query.core.basic.api.select.Query;
//import com.easy.query.core.basic.jdbc.executor.internal.enumerable.DraftResult;
//import com.easy.query.core.basic.jdbc.executor.internal.enumerable.JdbcStreamResult;
//import com.easy.query.core.basic.jdbc.parameter.ToSQLContext;
//import com.easy.query.core.basic.pagination.EasyPageResultProvider;
//import com.easy.query.core.context.QueryRuntimeContext;
//import com.easy.query.core.enums.sharding.ConnectionModeEnum;
//import com.easy.query.core.expression.builder.core.ValueFilter;
//import com.easy.query.core.expression.lambda.Property;
//import com.easy.query.core.expression.lambda.SQLConsumer;
//import com.easy.query.core.expression.lambda.SQLExpression1;
//import com.easy.query.core.expression.lambda.SQLExpression2;
//import com.easy.query.core.expression.lambda.SQLFuncExpression1;
//import com.easy.query.core.expression.parser.core.base.tree.TreeCTEConfigurer;
//import com.easy.query.core.expression.segment.ColumnSegment;
//import com.easy.query.core.expression.sql.builder.EntityQueryExpressionBuilder;
//import com.easy.query.core.expression.sql.builder.ExpressionContext;
//import com.easy.query.core.metadata.EntityMetadata;
//import com.easy.query.core.metadata.EntityMetadataManager;
//import com.easy.query.core.metadata.NavigateMetadata;
//import com.easy.query.core.proxy.PropTypeColumn;
//import com.easy.query.core.proxy.ProxyEntity;
//import com.easy.query.core.proxy.ProxyEntityAvailable;
//import com.easy.query.core.proxy.SQLColumn;
//import com.easy.query.core.proxy.SQLGroupByExpression;
//import com.easy.query.core.proxy.SQLSelectAsExpression;
//import com.easy.query.core.proxy.SQLSelectExpression;
//import com.easy.query.core.proxy.columns.SQLQueryable;
//import com.easy.query.core.proxy.core.draft.DraftFetcher;
//import com.easy.query.core.util.EasyObjectUtil;
//import com.easy.query.core.util.EasySQLExpressionUtil;
//import com.easy.query.core.util.EasyStringUtil;
//
//import java.math.BigDecimal;
//import java.sql.Statement;
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Map;
//import java.util.Objects;
//import java.util.function.Function;
//import java.util.function.Supplier;
//import java.util.stream.Collectors;
//
///**
// * create time 2024/2/24 21:53
// * 文件说明
// *
// * @author xuejiaming
// */
//public class EasySelectManyQueryable, TEntity> implements EntityQueryable, List> {
//
//    private final ClientQueryable queryable;
//    private final ListProxy listProxy;
//    private final String navValue;
//    private final NavigateMetadata navigateMetadata;
//    private final QueryRuntimeContext runtimeContext;
//    private final Property navigateGetter;
//
//    public EasySelectManyQueryable(ClientQueryable queryable, ListProxy listProxy, String navValue) {
//
//        this.listProxy = listProxy;
//        this.navValue = navValue;
//        this.runtimeContext = queryable.getSQLEntityExpressionBuilder().getRuntimeContext();
//        EntityMetadata entityMetadata = listProxy.getSqlQueryable().getOriginalTable().getEntityMetadata();
//        if (Objects.equals(entityMetadata.getEntityClass(), queryable.queryClass())) {
//            selectAutoInclude0(runtimeContext.getEntityMetadataManager(), queryable, entityMetadata, navValue);
//            this.navigateMetadata = entityMetadata.getNavigateNotNull(navValue);
//            this.navigateGetter = this.navigateMetadata.getGetter();
//            this.queryable = queryable;
//        } else {
//            ExpressionContext expressionContext = queryable.getSQLEntityExpressionBuilder().getExpressionContext();
//            //如果没有include默认include
//            if (!expressionContext.hasIncludes()) {
//                EntityMetadataManager entityMetadataManager = runtimeContext.getEntityMetadataManager();
//                EntityMetadata queryEntityMetadata = runtimeContext.getEntityMetadataManager().getEntityMetadata(queryable.queryClass());
//                String[] navValueSplit = navValue.split("\\.");
//                String firstNavValue = navValueSplit[0];
//                NavigateMetadata currentNavigateMetadata = queryEntityMetadata.getNavigateNotNull(firstNavValue);
//                EntityMetadata currentEntityMetadata = entityMetadataManager.getEntityMetadata(currentNavigateMetadata.getNavigatePropertyType());
//                for (int i = 1; i < navValueSplit.length - 1; i++) {
//                    String currentNavValue = navValueSplit[i];
//                    currentNavigateMetadata = currentEntityMetadata.getNavigateNotNull(currentNavValue);
//                    currentEntityMetadata = entityMetadataManager.getEntityMetadata(currentNavigateMetadata.getNavigatePropertyType());
//                }
//                String targetPropertyOrPrimary = currentNavigateMetadata.getTargetPropertyOrPrimary(runtimeContext);
//                NavigateMetadata navigateMetadataResult = currentEntityMetadata.getNavigateNotNull(navValueSplit[navValueSplit.length - 1]);
//                this.navigateMetadata = navigateMetadataResult;
//                this.navigateGetter = navigateMetadataResult.getGetter();
//                EntityQueryExpressionBuilder sqlEntityExpressionBuilder = queryable.getSQLEntityExpressionBuilder();
//                NavigateMetadata finalCurrentNavigateMetadata = currentNavigateMetadata;
//                this.queryable = queryable.select(currentEntityMetadata.getEntityClass(), o -> {
//                            o.getAsSelector().column(listProxy.getSqlQueryable().getOriginalTable(), targetPropertyOrPrimary);
//                            //todo include
//                            EasySQLExpressionUtil.appendTargetExtraTargetProperty(finalCurrentNavigateMetadata,sqlEntityExpressionBuilder,o.getAsSelector(),listProxy.getSqlQueryable().getOriginalTable());
//
//                        })
//                        .include(t -> t.with(navValueSplit[navValueSplit.length - 1]));
//            } else {
//                //如果存在include那么就只能一张表一张表走
//                EntityMetadataManager entityMetadataManager = runtimeContext.getEntityMetadataManager();
//                EntityMetadata queryEntityMetadata = runtimeContext.getEntityMetadataManager().getEntityMetadata(queryable.queryClass());
//                String[] navValueSplit = navValue.split("\\.");
//                String firstNavValue = navValueSplit[0];
//                NavigateMetadata currentNavigateMetadata = queryEntityMetadata.getNavigateNotNull(firstNavValue);
//                EntityMetadata currentEntityMetadata = entityMetadataManager.getEntityMetadata(currentNavigateMetadata.getNavigatePropertyType());
//                List> replyExpressions = new ArrayList<>();
//                replyExpressions.add(currentNavigateMetadata.getGetter());
//                for (int i = 1; i < navValueSplit.length - 1; i++) {
//                    String currentNavValue = navValueSplit[i];
//                    currentNavigateMetadata = currentEntityMetadata.getNavigateNotNull(currentNavValue);
//                    currentEntityMetadata = entityMetadataManager.getEntityMetadata(currentNavigateMetadata.getNavigatePropertyType());
//                    replyExpressions.add(currentNavigateMetadata.getGetter());
//                }
//                NavigateMetadata navigateMetadataResult = currentEntityMetadata.getNavigateNotNull(navValueSplit[navValueSplit.length - 1]);
//                replyExpressions.add(navigateMetadataResult.getGetter());
//                this.navigateMetadata = navigateMetadataResult;
//                this.navigateGetter = obj -> {
//                    if (obj == null) {
//                        return null;
//                    }
//                    Iterator> iterator = replyExpressions.iterator();
//                    Property first = iterator.next();
//                    Object value = first.apply(obj);
//                    while (iterator.hasNext()) {
//                        if (value != null) {
//                            value = iterator.next().apply(value);
//                        } else {
//                            return null;
//                        }
//                    }
//                    return value;
//                };
//                this.queryable = queryable;
//            }
//        }
//    }
//
//    private void selectAutoInclude0(EntityMetadataManager entityMetadataManager, ClientQueryable clientQueryable, EntityMetadata entityMetadata, String navigateProperties) {
//        if (EasyStringUtil.isBlank(navigateProperties)) {
//            return;
//        }
//        int i = navigateProperties.indexOf(".");
//        String navigateProperty = i >= 0 ? navigateProperties.substring(0, i) : navigateProperties;
//        String nextNavigateProperty = i >= 0 ? navigateProperties.substring(i + 1) : null;
//
//
//        clientQueryable
//                .include(t -> {
//                    ClientQueryable with = t.with(navigateProperty);
//                    NavigateMetadata navigateMetadata = entityMetadata.getNavigateNotNull(navigateProperty);
//                    EntityMetadata entityEntityMetadata = entityMetadataManager.getEntityMetadata(navigateMetadata.getNavigatePropertyType());
//                    selectAutoInclude0(entityMetadataManager, with, entityEntityMetadata, nextNavigateProperty);
//                    return with;
//                });
//    }
//
//    @Override
//    public EntityQueryable, List> noInterceptor() {
//        queryable.noInterceptor();
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> useInterceptor(String name) {
//        queryable.useInterceptor(name);
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> noInterceptor(String name) {
//        queryable.noInterceptor(name);
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> useInterceptor() {
//        queryable.useInterceptor();
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> useLogicDelete(boolean enable) {
//        queryable.useLogicDelete(enable);
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> queryLargeColumn(boolean queryLarge) {
//        queryable.queryLargeColumn(queryLarge);
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> asTable(Function tableNameAs) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> asSchema(Function schemaAs) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> asAlias(String alias) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> asTableLink(Function linkAs) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryExpressionBuilder getSQLEntityExpressionBuilder() {
//        return queryable.getSQLEntityExpressionBuilder();
//    }
//
//    @Override
//    public  String toSQL(Class resultClass, ToSQLContext toSQLContext) {
//        return queryable.toSQL(resultClass, toSQLContext);
//    }
//
//    @Override
//    public long count() {
//        return queryable.count();
//    }
//
//    @Override
//    public boolean any() {
//        return queryable.any();
//    }
//
//    @Override
//    public Class> queryClass() {
//        return EasyObjectUtil.typeCastNullable(List.class);
//    }
//
//    @Override
//    public List findOrNull(Object id) {
//        Object entity = queryable.findOrNull(id);
//        return getNavigates(entity);
//    }
//
//    @Override
//    public List findNotNull(Object id, Supplier throwFunc) {
//        Object entity = queryable.findNotNull(id, throwFunc);
//        return getNavigates(entity);
//    }
//
//    @Override
//    public  TR firstOrNull(Class resultClass) {
//        Object entity = queryable.firstOrNull(queryable.queryClass());
//        return getNavigates(entity);
//    }
//
//    @Override
//    public  TR firstNotNull(Class resultClass, Supplier throwFunc) {
//        Object entity = queryable.firstNotNull(queryable.queryClass(), throwFunc);
//        return getNavigates(entity);
//    }
//
//    @Override
//    public  List toList(Class resultClass) {
//        List entities = queryable.toList(queryable.queryClass());
//        return entities.stream().map(o -> {
//            return this.getNavigates(o);
//        }).collect(Collectors.toList());
//    }
//
//    @Override
//    public Map toMap() {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public List> toMaps() {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  EasyPageResult toPageResult(Class tResultClass, long pageIndex, long pageSize, long pageTotal) {
//
//        EasyPageResult pageResult = queryable.toPageResult(queryable.queryClass(), pageIndex, pageIndex, pageTotal);
//        EasyPageResultProvider easyPageResultProvider = runtimeContext.getEasyPageResultProvider();
//        List data = pageResult.getData().stream().map(o -> {
//            return this.getNavigates(o);
//        }).collect(Collectors.toList());
//        return easyPageResultProvider.createPageResult(pageIndex, pageSize, pageResult.getTotal(), data);
//    }
//
//    @Override
//    public  EasyPageResult toShardingPageResult(Class tResultClass, long pageIndex, long pageSize, List totalLines) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  TR singleOrNull(Class resultClass) {
//        Object entity = queryable.singleOrNull(queryable.queryClass());
//        return getNavigates(entity);
//    }
//
//    @Override
//    public  TR singleNotNull(Class resultClass, Supplier throwFunc) {
//        Object entity = queryable.singleNotNull(queryable.queryClass(), throwFunc);
//        return getNavigates(entity);
//    }
//
//    @Override
//    public  JdbcStreamResult toStreamResult(Class resultClass, SQLConsumer configurer) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public ClientQueryable> getClientQueryable() {
//        throw new UnsupportedOperationException();
//    }
//
////    @Override
////    public , TR> List toList(TRProxy trProxy) {
////        throw new UnsupportedOperationException();
////    }
//
//    @Override
//    public EntityQueryable, List> cloneQueryable() {
//        return new EasySelectManyQueryable<>(queryable.cloneQueryable(), listProxy, navValue);
//    }
//
//    @Override
//    public long countDistinct(SQLExpression2> selectExpression) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public boolean all(SQLExpression2> whereExpression) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> select(String columns) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> distinct(boolean condition) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> limit(boolean condition, long offset, long rows) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> asTracking() {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> asNoTracking() {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> useShardingConfigure(int maxShardingQueryLimit, ConnectionModeEnum connectionMode) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> useMaxShardingQueryLimit(int maxShardingQueryLimit) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> useConnectionMode(ConnectionModeEnum connectionMode) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> filterConfigure(ValueFilter valueFilter) {
//        return this;
//    }
//
//    @Override
//    public ListProxy get1Proxy() {
//        return listProxy;
//    }
//
//    @Override
//    public QueryRuntimeContext getRuntimeContext() {
//        return runtimeContext;
//    }
//
//    @Override
//    public  Query selectCount(Class numberClass) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  Query selectSum(SQLFuncExpression1, SQLColumn, TMember>> columnSelector) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  Query selectAvg(SQLFuncExpression1, SQLColumn, TMember>> columnSelector) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  Query selectMax(SQLFuncExpression1, SQLColumn, TMember>> columnSelector) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  Query selectMin(SQLFuncExpression1, SQLColumn, TMember>> columnSelector) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> where(boolean condition, SQLExpression1> whereExpression) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> whereById(boolean condition, Object id) {
//        return this;
//    }
//
//    @Override
//    public  EntityQueryable, List> whereByIds(boolean condition, Collection ids) {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> whereObject(boolean condition, Object object) {
//        return this;
//    }
//
//    @Override
//    public  & SQLGroupByExpression, TR> EntityQueryable groupBy(SQLFuncExpression1, SQLFuncExpression1, TRProxy>> selectExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> having(boolean condition, SQLExpression1> aggregateFilterSQLExpression) {
//        return this;
//    }
//
//    @Override
//    public , TProperty extends ProxyEntityAvailable> EntityQueryable, List> include(boolean condition, SQLFuncExpression1, TPropertyProxy> navigateIncludeSQLExpression, SQLExpression1> includeAdapterExpression, Integer groupSize) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , TProperty extends ProxyEntityAvailable> EntityQueryable, List> includes(boolean condition, SQLFuncExpression1, SQLQueryable> navigateIncludeSQLExpression, SQLExpression1> includeAdapterExpression, Integer groupSize) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , T2 extends ProxyEntityAvailable> EntityQueryable2, List, T2Proxy, T2> leftJoin(Class joinClass, SQLExpression2, T2Proxy> onExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , T2> EntityQueryable2, List, T2Proxy, T2> leftJoin(EntityQueryable joinQueryable, SQLExpression2, T2Proxy> onExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , T2 extends ProxyEntityAvailable> EntityQueryable2, List, T2Proxy, T2> rightJoin(Class joinClass, SQLExpression2, T2Proxy> onExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , T2> EntityQueryable2, List, T2Proxy, T2> rightJoin(EntityQueryable joinQueryable, SQLExpression2, T2Proxy> onExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , T2 extends ProxyEntityAvailable> EntityQueryable2, List, T2Proxy, T2> innerJoin(Class joinClass, SQLExpression2, T2Proxy> onExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , T2> EntityQueryable2, List, T2Proxy, T2> innerJoin(EntityQueryable joinQueryable, SQLExpression2, T2Proxy> onExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> orderBy(boolean condition, SQLExpression1> selectExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> orderByObject(boolean condition, ObjectSort objectSort) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> getQueryable() {
//        return this;
//    }
//
//    @Override
//    public EntityQueryable, List> fetchBy(SQLFuncExpression1, SQLSelectExpression> selectExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , TR> EntityQueryable select(SQLFuncExpression1, TRProxy> selectExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  Query selectColumn(SQLFuncExpression1, PropTypeColumn> selectExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  Query select(Class resultClass) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  Query select(Class resultClass, SQLFuncExpression1, SQLSelectAsExpression> selectExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public  Query selectAutoInclude(Class resultClass, boolean replace) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , TR extends ProxyEntityAvailable & DraftResult> EntityQueryable selectDraft(SQLFuncExpression1, DraftFetcher> selectExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> select(Collection columnSegments, boolean clearAll) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> asTreeCTE(SQLFuncExpression1, SQLColumn, ?>> codePropertyExpression, SQLFuncExpression1, SQLColumn, ?>> parentCodePropertyExpression, SQLExpression1 treeExpression) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> union(Collection, List>> unionQueries) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public EntityQueryable, List> unionAll(Collection, List>> unionQueries) {
//
//        throw new UnsupportedOperationException();
//    }
//
//    //
////    @Override
////    public Query> cloneQueryable() {
////        return new EasySelectManyQueryable<>(queryable.cloneQueryable(),navValue);
////    }
////
////    @Override
////    public EntityQueryExpressionBuilder getSQLEntityExpressionBuilder() {
////        return queryable.getSQLEntityExpressionBuilder();
////    }
////
////    @Override
////    public  String toSQL(Class resultClass, ToSQLContext toSQLContext) {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public long count() {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public boolean any() {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public Query distinct(boolean condition) {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public Query> limit(boolean condition, long offset, long rows) {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public Query> asTracking() {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public Query> asNoTracking() {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public Query> useShardingConfigure(int maxShardingQueryLimit, ConnectionModeEnum connectionMode) {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public Query> useMaxShardingQueryLimit(int maxShardingQueryLimit) {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public Query> useConnectionMode(ConnectionModeEnum connectionMode) {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public Class> queryClass() {
////        return EasyObjectUtil.typeCastNullable(List.class);
////    }
////
////    @Override
////    public List findOrNull(Object id) {
////        Object entity = queryable.findOrNull(id);
////        return getNavigates(entity);
////    }
////
//    private  TResult getNavigates(Object entity) {
//        if (entity != null) {
//            Collection values = EasyObjectUtil.typeCastNullable(navigateGetter.apply(entity));
//            if (values == null) {
//                return null;
//            }
//            return EasyObjectUtil.typeCastNullable(new ArrayList<>(values));
//        }
//        return null;
//    }
//
//    @Override
//    public EntityQueryable, List> tableLogicDelete(Supplier tableLogicDel) {
//        throw new UnsupportedOperationException();
//    }
//
//    @Override
//    public , TR> List toList(SQLFuncExpression1, TRProxy> fetchResultExpression) {
//
//        throw new UnsupportedOperationException();
//    }
////
////    @Override
////    public List findNotNull(Object id, Supplier throwFunc) {
////        Object entity = queryable.findNotNull(id, throwFunc);
////        return getNavigates(entity);
////    }
////
////    @Override
////    public  TR firstOrNull(Class resultClass) {
////        Object entity = queryable.firstOrNull(queryable.queryClass());
////        return getNavigates(entity);
////    }
////
////    @Override
////    public  TR firstNotNull(Class resultClass, Supplier throwFunc) {
////        Object entity = queryable.firstNotNull(queryable.queryClass(), throwFunc);
////        return getNavigates(entity);
////    }
////
////    @Override
////    public  List toList(Class resultClass) {
////        List entities = queryable.toList(queryable.queryClass());
////        return entities.stream().map(o -> {
////            return this.getNavigates(o);
////        }).collect(Collectors.toList());
////    }
////
////    @Override
////    public Map toMap() {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public List> toMaps() {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public  EasyPageResult toPageResult(Class tResultClass, long pageIndex, long pageSize, long pageTotal) {
////
////        EasyPageResult pageResult = queryable.toPageResult(queryable.queryClass(), pageIndex, pageIndex, pageTotal);
////        EasyPageResultProvider easyPageResultProvider = runtimeContext.getEasyPageResultProvider();
////        List data = pageResult.getData().stream().map(o -> {
////            return this.getNavigates(o);
////        }).collect(Collectors.toList());
////        return easyPageResultProvider.createPageResult(pageIndex, pageSize, pageResult.getTotal(), data);
////    }
////
////    @Override
////    public  EasyPageResult toShardingPageResult(Class tResultClass, long pageIndex, long pageSize, List totalLines) {
////        throw new UnsupportedOperationException();
////    }
////
////    @Override
////    public  TR singleOrNull(Class resultClass) {
////        Object entity = queryable.singleOrNull(queryable.queryClass());
////        return getNavigates(entity);
////    }
////
////    @Override
////    public  TR singleNotNull(Class resultClass, Supplier throwFunc) {
////        Object entity = queryable.singleNotNull(queryable.queryClass(),throwFunc);
////        return getNavigates(entity);
////    }
////
////    @Override
////    public  JdbcStreamResult toStreamResult(Class resultClass, SQLConsumer configurer) {
////        throw new UnsupportedOperationException();
////    }
//}