【问题标题】:What is Querydsl PathBuilder String parameter 'variable' used for什么是 Querydsl PathBuilder 字符串参数“变量”用于
【发布时间】:2020-05-25 00:52:53
【问题描述】:

我在我的 Spring Boot API 中使用 Querydsl 进行一些复杂的数据过滤,当我声明 PathBuilder 变量时,我看到首先你必须像 YourClass.class 这样静态传递你的类,然后是一个字符串variable为构造函数,如下图:

    PathBuilder<Plan> entityPath = new PathBuilder<>(Plan.class, "plan");

所以我想知道为什么需要这个字符串参数以及为什么它的名称必须与我的类名相同,因为当我删除或修改它时,entityPath 不起作用。

【问题讨论】:

  • 如果你没有设置组件的名称,那么spring将使用默认的名称是你的类名

标签: java spring querydsl


【解决方案1】:

PathExpressionPathBuilder)根据定义表示一个路径变量。在您的情况下,查询中的路径将是plan。连续地,您可以在此路径上构建并创建各种路径类型。例如属性检索:entityPath.get("someProperty") 将返回一个表示plan.somePropety 的路径表达式。所以你不能在没有别名的情况下创建PathExpressions,因为它本质上是没有意义的。

那么为什么这个别名并不总是从 Path 类型中推断出来,简单地说:因为它不相关。使用的底层实体可能有不同的命名策略,你可能想混合相同类型的不同路径变量,你可能引用一个本身具有特定别名的节点。

别名不必等同于简单的类名,它必须等同于它从查询中的任何 from/join 子句中引用的别名。

【讨论】:

  • The alias doesn't have to be equivalent to the simple classname, it has to be equivalent to the alias it references from any of the from/join clauses in the query. 说得好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多