JPA CriterialBuilder.concat 强制使用 concat 函数

2024-04-13

我在用着CriteriaBuilder.concat使用以下代码连接 2 个字符串:

Expression<String> concat = criteriaBuilder.concat(expr1, expr2)

但生成的 SQL 是这样的:

select distinct col_1 || col_2

什么导致org.hibernate.hql.ast.QuerySyntaxException:

expecting CLOSE, found '||' near line 1, column 48 [
select count(distinct generatedAlias0.hostname || generatedAlias0.device) from ...
                                                ^(1,48)

我想知道如何强制它生成以下使用以下 SQLconcat()函数,而不是||操作员?

select distinct concat(col_1, col_2)

Update:

从错误中我们可以看出问题更多出在Hibernate上(v3.6.10.Final) 方面,这就是为什么让 MySQL 接受||因为串联没有帮助,更新到新版本对我来说也不是一个选择。

谢谢


我实际上已经找到了解决方法。通过使用@Formula http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e2785(来自 Hibernate)而不是CriteriaBuilder对于同一任务,如下所示:

@Entity
public class MyEntity {

  @Column(name="col_a")
  private String colA;

  @Column(name="col_b")
  private String colB;

  @Formula("concat(col_a, col_b)")
  private String concated;

  //...
}

这样我就可以使用concated字段为CriteriaBuilder.countDistinct:

//...

Expression<?> exp = criteriaBuilder.countDistinct(entity.get("concated"));
criteriaQuery.select(exp);

TypedQuery<Long> query = entityManager.createQuery(criteriaQuery);
return query.getSingleResult();

我希望 JPA 能够(或者希望已经)支持countDistinct如果有多个列,那么所有这些混乱都是可以避免的(参见:如何对多列进行不同计数 https://stackoverflow.com/questions/9184135/how-to-countdistinct-on-multiple-columns,答案是NO).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JPA CriterialBuilder.concat 强制使用 concat 函数 的相关文章

  • Spring Security 自定义身份验证 - AuthenticationProvider 与 UserDetailsS​​ervice

    据我所知 当您想要在 Spring Security 中进行自定义身份验证时 您可以实现自定义AuthenticationProvider或定制UserDetailsService Autowired public void configu
  • 相当于 java PBKDF2WithHmacSHA1 的 Python

    我的任务是构建一个 API 的使用者 该 API 需要带有 UNIX 时间种子值的加密令牌 我看到的示例是使用我不熟悉的 Java 实现的 在阅读文档和其他堆栈文章后一直无法找到解决方案 使用javax crypto SecretKey j
  • Java selenium - 如何在 TimeoutException 之后正确刷新网页?

    ChromeOptions options new ChromeOptions options addExtensions new File extension 6 2 5 0 crx ZenMate options addExtensio
  • Spring MVC - 自动查找验证器

    假设我有一个像这样的示例实体类 public class Address 和相应的验证器 Component public AddressValidator implements Validator Override public bool
  • Java中的字节和字符转换

    如果我将一个字符转换为byte然后回到char 那个角色神秘地消失了 变成了别的东西 这怎么可能 这是代码 char a line 1 byte b byte a line 2 char c char b line 3 System out
  • Mediaplayer 播放几次后停止播放

    我有一个按钮 按下它会播放一个随机声音剪辑 然后播放另一个声音剪辑 然后通过一个媒体播放器播放另一个声音剪辑 但是多次按下该按钮 15 20 次 后 所有音频都会停止 我在播放最后一个音频剪辑后释放媒体播放器 所以我不认为这是原因 有什么指
  • java中%%是什么意思?

    我是一名 PHP 程序员 想知道这行代码的含义 System out printf exp 3f is 3f n x Math exp x 3f 3f n 和逗号 x 是什么意思 它与C类似printf http java sun com
  • 如何在android中使用retrofit访问404错误?

    我正在使用改造 2 访问 REST API 以使用原始正文插入 JSON 数据 我从服务器获得成功响应 但在响应时收到 404 错误 我想访问404错误请帮我解决这个问题 ApiUtil getServiceClass sendFinalC
  • 参考接口创建对象

    引用变量可以声明为类类型或接口类型 如果变量声明为接口类型 则它可以引用实现该接口的任何类的任何对象 根据上面的说法我做了一个理解上的代码 正如上面所说声明为接口类型 它可以引用实现该接口的任何类的任何对象 但在我的代码中显示display
  • 在 Java 中生成 LaTeX 输出 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有用于从 Java 生成 LaTeX 输出的 Java 库 渲染乳胶 JLatex数学 https
  • python 中的子进程调用以使用 JAVA_OPTS 调用 java jar 文件

    示例代码 import subprocess subprocess call java jar temp jar 如何在上面的命令中指定JAVA OPTS 当我使用上述命令时 我收到 java lang OutOfMemoryError 无
  • Java 套接字 - 读和写

    问题 客户端没有收到任何消息 这是客户端和服务器的完整代码 CLIENT public class Client extends Socket public Client String hostName int port throws Un
  • @Transactional 注解属于哪里?

    如果您将 Transactional in the DAO类和 或其方法 或者注释使用 DAO 对象调用的服务类是否更好 或者注释两个 层 是否有意义 我认为事务属于服务层 它是了解工作单元和用例的人 如果您将多个 DAO 注入到需要在单个
  • 从侦听器中修改 JFrame [重复]

    这个问题在这里已经有答案了 可能的重复 如何在框架可见后调用 setUndecorated https stackoverflow com questions 875132 how to call setundecorated after
  • 有没有办法删除 JShell 中的导入?

    我正在发现 JShell 并且发现默认添加的导入 jshell gt imports import java io import java math import java net import java nio file import j
  • 为什么 CompletableFuture 的 thenAccept() 不在主线程上运行

    我在 CompletableFuture 的 SupplyAsync 中处理长时间运行的操作 并将结果放入 thenAccept 中 有时 thenAccept 在主线程上执行 但有时它在工作线程上运行 但我只想在主线程上运行 thenAc
  • 如果 @transactional 在类级别应用,如何拦截 @transactional 参数

    我想捕获 transactional 的参数 如果它应用于类级别 例如如果 transactional应用在方法级别 例如 class A transactional readOnly true public void someMethod
  • Swing GUI 出现 IntelliJ 错误“contentPane 无法设置为 null。”从终端编译时

    当我从 IntelliJ 编译我的项目时 没有任何问题 我的程序运行顺利 但是当我尝试使用 javac 从终端编译它时 警告 注意 Victor presentation TableControllerMenu java 使用未经检查或不安
  • 为什么我们不能在函数式接口中重载抽象方法? (爪哇)

    所以我熟悉java中的函数式接口 以及它们与lambda表达式的使用 一个函数式接口只能包含一个抽象方法 当从 lambda 表达式使用这一孤独方法时 您不需要指定其名称 因为接口中只有一个抽象方法 编译器知道这就是您正在引用的方法 Exa
  • RetentionPolicy CLASS 与 RUNTIME

    两者之间有什么实际区别RetentionPolicy CLASS and RetentionPolicy RUNTIME 看起来两者都被记录到字节码中 并且无论如何都可以在运行时访问 无论如何 两者都可以在运行时访问 那不是那个javado

随机推荐

  • 如何将字符串中每个单词的第一个字母大写?

    s the brown fox 在这里做点什么 s应该 The Brown Fox 做到这一点最简单的方法是什么 The title http docs python org library stdtypes html str title字
  • VBS 脚本查找特定扩展名的所有文件并将它们复制到特定目的地

    我正在制作一个项目 通过创建一个脚本来在工作中使用来自动化我们的一个流程 我希望脚本检查用户名的输入 以搜索指定的用户配置文件路径中的任何 doc docx pdf pst 等文件 并将它们按原样复制到网络驱动器位置上创建的文件夹中 我的主
  • Grails 2抽象域继承问题

    当在 Grails 中使用抽象 或非抽象 继承时 以下内容对我不起作用 很快 我的继承如下 abstract BaseClass SomeClass extends BaseClass SomeOtherClass extends Base
  • Cordova iOS 启动 comgooglemaps 失败

    我有一个小问题 我使用 comgooglemaps 方案来调用谷歌地图并执行搜索 这工作正常 但问题是如果用户没有安装谷歌地图 现在 我如何检查这一点以及是否未安装谷歌地图以通过浏览器调用谷歌 或者调用用户使用的其他地图应用程序 Thanx
  • 使用 group_by(多个变量)时的 dplyr 问题

    我想开始使用 dplyr 代替 ddply 但我无法了解它是如何工作的 我已阅读文档 例如 为什么当我尝试 mutate 时 group by 函数无法按预期工作 看看mtcar 图书馆 车 假设我制作了一个 data frame 它是 m
  • UITableview 中的 UItextView,自动更正气泡不可见

    我有一个带有自定义单元格的 UITableView 每个单元格包含一个 UITextView 并且当用户在 TextView 中键入文本时 单元格会调整大小 我的问题是 当用户位于 TextView 自动更正第一行时 当前单元格中将看不到气
  • 将 HTML 类/ID 添加到 Google 地图标记 (API V3)

    如何向 Google Maps API V3 标记添加类或 ID 我希望能够使用 jQuery 访问标记 编辑 嗨 clarkf 感谢您的回复 使用 Firebug 在检查我的地图时我无法看到这些类 但我确实注意到有两个 div 一种用于图
  • 在页面重新加载时传递 $_GET 参数[重复]

    这个问题在这里已经有答案了 我试图做到这一点 以便当页面重新加载时 它使用与上一页相同的 GET 参数来重定向我 现在我正在尝试使用标头来实现此目的 但是当我提交表单时 变量 id 为空 HTML 表单
  • 为什么 Elastic Load Balancing 报告“停止服务”?

    我正在尝试设置弹性负载均衡 ELB http aws amazon com elasticloadbalancing 在AWS中用于在多个实例之间拆分请求 我基于相同的 AMI 创建了多个网络服务器镜像 并且我能够单独 ssh 进入每个镜像
  • Windows 批处理 FOR 命令制表符分隔符

    我正在尝试使用 Windows 批处理FOR命令 http www microsoft com resources documentation windows xp all proddocs en us for mspx mfr true
  • 使用 junit @Rule、expectCause() 和 hamcrest 匹配器

    我有一个测试 Rule public ExpectedException thrown ExpectedException none Test public void testMethod final String error error
  • PyQt 的 QMainWindow closeEvent 从未被调用

    我在 python 中使用 pyqt4 当我关闭 QMainWindow 窗口时 它不被处理closeEvent方法 请有人告诉我这段代码有什么问题 from PyQt4 import QtCore QtGui class Ui MainW
  • 未找到节点检查器命令

    我尝试安装并运行node inspector使用一堆不同的命令仍然无法运行它 Jordans MacBook Pro angular express blog jordanbaucke node inspector bash node in
  • 为什么 Blazor 生命周期方法会执行两次?

    因此 随着 asp net core 3 0 和 blazor 1 0 的发布 我开始使用 blazor 进行一些实际工作 将 Blazor 组件代码拆分为后台代码时 我使用以下内容 public class LogoutModel Bla
  • 是否可以为 Microsoft SQL Server 上的 SQL 查询设置超时?

    我有一个场景 有时用户选择正确的参数并进行需要几分钟或更长时间才能执行的查询 我无法阻止他选择这样的参数组合 这是相当合法的 所以我想在查询上设置超时 请注意 我真的想停止查询执行本身并回滚任何事务 因为否则它会占用大部分服务器资源 如果添
  • Android WebView - 清除缓存

    我有一个 WebView 控件 我想每次显示当前站点 但我认为 WebView 只显示该站点的缓存版本 我尝试了所有发现的东西here https stackoverflow com questions 14392414 android w
  • 如何在 Twitter Bootstrap 中自定义响应列和输入字段?

    主要问题是如何自定义 bootstrap 响应式 css 我的代码部分有效 但我无法修复这种情况 这很难解释 所以为了更好地理解 我在屏幕截图上进行了可视化呈现 我发布了实际清理过的模板代码JSFIDDLE http jsfiddle ne
  • 如何在 python 中使用多处理?

    import time from multiprocessing import Process start time perf counter def sleep print Sleeping 1 second s time sleep 1
  • Testcafe - 如何在所有装置运行后运行代码

    我想创建 SQL Server 数据库的快照 然后在 所有装置 运行后恢复它 我可以在每个固定装置之后通过固定装置中的 after 挂钩来完成此操作 但是 这会在运行测试时引起问题 因为数据库在恢复后可能仍在转换中 所以我宁愿在所有赛程结束
  • JPA CriterialBuilder.concat 强制使用 concat 函数

    我在用着CriteriaBuilder concat使用以下代码连接 2 个字符串 Expression