当前使用版本(必填,否则不予处理)
3.5.3.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
我使用了泛型接口执行 LambdaQueryWrapper,使用了Consumer拼接了一个 And 条件,报出了一个实体找不到字段的错误,并解析为父类实体
重现步骤(如果有就写完整)
父类接口
public interface IWorkspaceDataSetFieldConfigService<T extends BaseWorkspaceDataSetFieldConfig, P extends BaseParentFieldConfig, R extends BaseFieldConfig> extends IService<T>
子类接口
public interface IWorkspaceDataSetFilterFieldConfigService extends IWorkspaceDataSetFieldConfigService<WorkspaceDataSetFilterFieldConfig, ParentFilterFieldConfig, FilterFieldConfig>
子类接口实现
public class WorkspaceDataSetFilterFieldConfigServiceImpl extends WorkspaceDataSetFieldConfigServiceImpl<WorkspaceDataSetFilterFieldConfigMapper, WorkspaceDataSetFilterFieldConfig>
implements IWorkspaceDataSetFilterFieldConfigService
这是调用代码,isDefaultDisplayFlag 是 WorkspaceDataSetFilterFieldConfig 子类的字段,父类为 BaseWorkspaceDataSetFieldConfig
workspaceDataSetFilterFieldConfigService.listValidatedByWorkspaceDataSetId(workspaceDataSet.getId(), cs -> cs.eq(WorkspaceDataSetFilterFieldConfig::isDefaultDisplayFlag, true))
报错信息
can not find lambda cache for this entity
Comment From: miemieYaho
识别不到T的具体类型,wapper实例化使用有class入参的构造函数并传入实际的T的class
Comment From: shencangsheng
@miemieYaho 我更换了一种方式,但是还是报 can not find lambda cache for this entity 这个错误,以下是我代码
default List<P> listFiledConfig(String workspaceDataSetId, LambdaQueryWrapper<T> workspaceDataSetLambdaQueryWrapper, LambdaQueryWrapper<P> parentLambdaQueryWrapper, LambdaQueryWrapper<R> lambdaQueryWrapper) throws Exception {
List<T> workspaceDataSetFieldConfigs = list(workspaceDataSetLambdaQueryWrapper.eq(T::getWorkspaceDataSetId, workspaceDataSetId));
Map<String, List<T>> map = workspaceDataSetFieldConfigs.stream().collect(Collectors.groupingBy(p -> p.getParentFieldId()));
List<P> parentFieldConfigs = getParentFieldConfigService().list(parentLambdaQueryWrapper);
for (P parentFieldConfig : parentFieldConfigs) {
parentFieldConfig.setFieldConfigs(getFieldConfigService().list(lambdaQueryWrapper.in(R::getId, map.get(parentFieldConfig.getId()).stream().map(p -> p.getId()).collect(Collectors.toList()))));
}
return parentFieldConfigs;
}
List listFiledConfig = workspaceDataSetFilterFieldConfigService.listFiledConfig("10000", new LambdaQueryWrapper<WorkspaceDataSetFilterFieldConfig>()
.eq(WorkspaceDataSetFilterFieldConfig::isDefaultDisplayFlag, true), new LambdaQueryWrapper<>(), new LambdaQueryWrapper<>());
现在不知道该如何进行了
Comment From: miemieYaho
new LambdaQueryWrapper(T.class)
Comment From: shencangsheng
@miemieYaho 感谢,可以了