当前位置: 首页 > 面试题库 >

在querydsl中调用mysql嵌套/内部函数

邹英悟
2023-03-14
问题内容

我需要在QueryDsl Native MySQL中运行以下查询。

SELECT cast(json_unquote(JSON_EXTRACT(vendor_master,'$.vendor.currency')) as char) as currency FROM vendor;

上面的查询具有嵌套的3个mysql函数,例如cast,json_unquote和json_extract。在QueryDsl中,我为每个函数创建了单独的表达式,如下面的代码所示。

    SimpleExpression<String> exp1=Expressions.simpleTemplate(String.class,"json_extract({0},{1})",vendor.vendorMaster,"$.vendor.currency");
SimpleExpression<String> exp2=Expressions.simpleTemplate(String.class,"json_unquote({0})",exp2);
SimpleExpression<String> exp3=Expressions.simpleTemplate(String.class,"cast({0} as char) as currency",exp3);
List<Tuple> tuples=sqlQueryFactory.select(exp3).from(vendor).fetch();

我必须创建更多数量的表达式,而不要创建更多的函数。为了降低复杂性,是否可以在单个表达式中调用多个函数?


问题答案:

我找到了问题的答案。

SimpleExpression<String> exp=Expressions.simpleTemplate(String.class,"cast(json_unquote(json_extract({0},{1})) as char) as currency",vendor.vendorMaster,"$.vendor.currency"); 
List<Tuple> tuples=sqlQueryFactory.select(exp).from(vendor).fetch();

感谢您的答复。



 类似资料:
  • 问题内容: 我有一个方法,我已经分解成一些较小的嵌套函数来分解代码库: 有没有一种方法可以单独运行其中一个嵌套函数。例如: 编辑: 我正在尝试在使用pyramid_breaker构建的Web服务器上设置缓存 这是我的理解可能不准确: 现在我有这个原因是因为装饰器用来创建缓存键的名称空间是从函数和争论中产生的。因此,您不能仅将装饰器放在getThis上,因为请求变量是唯一的,并且缓存是无用的。所以我

  • 问题内容: 我有点着急,所以我只想问一个关于querydsl的快速问题。根据我的研究,查询dsl不支持存储过程,但可以支持数据库功能。我的问题是我们如何使用querydsl调用那些数据库函数? 问题答案: 您可以在查询中使用基于TemplateExpression的任意JPQL语法注入。 例如 如果您使用的是Hibernate 4.3或任何其他符合JPA 2.1的提供程序,则可以使用FUNCTIO

  • 问题内容: 我有以下代码: 有什么方法可以在函数外部调用函数?我试过调用,但我认为它仅在父函数内部可见。 问题答案:

  • 问题内容: 我有一些代码,其结构类似于此 问题是它向我吐了一个错误。 解析错误:语法错误,意外的T_LNUMBER,预期的T_VARIABLE或’$’ 有关于如何在bbcode函数的preg_replace内调用embed_video的想法吗? 谢谢! 问题答案: 您可以在上使用“ e”修饰符(请参见模式修饰符) 告诉将第二个参数视为PHP代码。

  • 问题内容: 这是我之前的问题的后续工作,但是如果我在其中的映射如何在React的render()方法中调用函数。 示例(此代码在extended的类内): 无论我尝试什么,我总是最终得到“ this.getItemInfo()不是一个函数”。 我在函数内部进行了on操作,实际上是在引用Window对象,但是我似乎找不到改变它的方法。 我累了: 定义为函数getItemInfo(){..} 作为第二

  • 问题内容: PHP中有一个非常糟糕的限制:如果您调用某个调用a2()的函数a1(),又调用了a3 …,那么何时调用将看到 致命错误:达到最大功能嵌套级别‘100’,正在中止! 有什么方法可以将100个嵌套调用的限制增加到500或10000吗? 这对我来说至关重要,因为我正在开发一个带有很多回调的基于事件的系统。 问题答案: 此错误消息专门来自XDebug扩展。PHP本身没有函数嵌套限制。更改php