-
Notifications
You must be signed in to change notification settings - Fork 154
Open
Description
确认
当前程序版本
1.5.4
问题描述
在selectFunc方法,alias使用SFunction时,只使用了 LambdaUtils.getName(alias) 转换成alias,代码如下
Lines 244 to 246 in 24d8e1f
| default <S, X> Children selectFunc(BaseFuncEnum funcEnum, SFunction<S, ?> column, SFunction<X, ?> alias) { | |
| return selectFunc(funcEnum, column, LambdaUtils.getName(alias)); | |
| } |
如果我的sql是
wrapper
.select(XXX::getXxxYxx)
.from(w -> w.selectFunc(DefaultFuncEnums.SUM, XXX::getXxxYxx))此时,转换成的sql是
select xxx_yxx from (select sum(xxx_yxx) as xxxYxx) t很显然子查询中的别名不是 xxx_yyy 而是驼峰的 xxxYxx,导致sql报错。
我尝试复制这个类的代码,使用自己的Wrapper类,并重写这个方法,按处理column的方法,从ColumnCache中获取缓存的字段信息,sql就正确了。
但又有另一个问题,假设我查询时,返回的不是一个entity类的对象,别名也不是entity中的字段(如果刚好重名,用entity类的lambda不存在这个问题),此时ColumnCache中就没有对应信息,如果强行使用ColumnCache就会报错,那只能自己去处理驼峰转下划线。
所以是否可以将alias的处理更智能,按entity的逻辑来缓存到ColumnCache中处理
详细堆栈日志
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels