什么是 Querydsl PathBuilder 字符串参数 'variable' 用于
What is Querydsl PathBuilder String parameter 'variable' used for
我在 Spring 启动 API 中使用 Querydsl 进行一些复杂的数据过滤,当我声明 PathBuilder
变量时,我已经看到首先你必须像 YourClass.class
这样静态地传递你的 class,然后为构造函数传递一个字符串 variable
,如下所示:
PathBuilder<Plan> entityPath = new PathBuilder<>(Plan.class, "plan");
所以我想知道为什么需要这个字符串参数以及为什么它的名称必须与我的 class 名称相同,因为当我删除或修改它时,entityPath
不会没用。
一个PathExpression
(其中PathBuilder
)根据定义代表一个路径变量。在您的情况下,查询中结束的路径将是 plan
。随后,您可以在此路径的基础上构建并创建各种路径类型。例如属性检索:entityPath.get("someProperty")
将return表示plan.somePropety
的路径表达式。所以你不能在没有别名的情况下创建 PathExpressions
,因为它本质上是没有意义的。
那么为什么这个别名并不总是从路径类型中推断出来,简单地说:因为它不相关。使用的底层实体可能有不同的命名策略,你可能想混合相同类型的不同路径变量,你可能引用一个本身具有特定别名的节点。
别名不必等同于简单类名,它必须等同于它从查询中的任何 from/join 子句引用的别名。
我在 Spring 启动 API 中使用 Querydsl 进行一些复杂的数据过滤,当我声明 PathBuilder
变量时,我已经看到首先你必须像 YourClass.class
这样静态地传递你的 class,然后为构造函数传递一个字符串 variable
,如下所示:
PathBuilder<Plan> entityPath = new PathBuilder<>(Plan.class, "plan");
所以我想知道为什么需要这个字符串参数以及为什么它的名称必须与我的 class 名称相同,因为当我删除或修改它时,entityPath
不会没用。
一个PathExpression
(其中PathBuilder
)根据定义代表一个路径变量。在您的情况下,查询中结束的路径将是 plan
。随后,您可以在此路径的基础上构建并创建各种路径类型。例如属性检索:entityPath.get("someProperty")
将return表示plan.somePropety
的路径表达式。所以你不能在没有别名的情况下创建 PathExpressions
,因为它本质上是没有意义的。
那么为什么这个别名并不总是从路径类型中推断出来,简单地说:因为它不相关。使用的底层实体可能有不同的命名策略,你可能想混合相同类型的不同路径变量,你可能引用一个本身具有特定别名的节点。
别名不必等同于简单类名,它必须等同于它从查询中的任何 from/join 子句引用的别名。