java - 在 Spring Data JPA 查询中将整数转换为字符串

标签 java hibernate spring-data-jpa jpql

我需要优化一个迭代多个对象的查询,并且我希望 Spring Data 让数据库处理它。我想最终得到 HashMap<String,String>看起来像

2134_9877, 9877
2134_2344, 2344
3298_9437, 9437

SQL 为 select convert(varchar,b.id)+'_'+convert(varchar,a.id)',a.id from t1 a join t2 b on a.jc = b.jc

到目前为止,我在存储库中得到了Whatever-QL,如下所示:

@Query("SELECT new map (a.bkey, a.akey) FROM mergeTable a WHERE a.discr= ?1")

问题是,bkey不是唯一的,只有与 akey 配对时才是唯一的我必须喂给它的怪物想要它们与下划线结合:2345_2177 .

我已经尝试过a.bkey.toString''+a.bkeynew String(a.bkey)只是string(a.bkey) (最后给出了一个新的异常,但仍然不起作用)但 Spring 不喜欢其中任何一个。我找不到任何问题,而且似乎我无法使用 SQLServer 的 Convert() 函数,因为这不是 SQL。

如何在此 @Query 中将整数作为字符串与下划线连接起来?

PS:使用在 SQLServer 中调试过的 native 查询会在 Hibernate 中引发一些奇怪的别名异常,因此我认为“走向 native ”注定是一个死胡同。

最佳答案

如果我没理解错的话,‘Whatever-QL’被称为JPQL,并且可以使用运算符CONCAT。仅它的使用取决于您正在运行的 JPA 版本,因为它接受两个或更多参数。

这就是答案。

JPA concat operator

关于java - 在 Spring Data JPA 查询中将整数转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33533937/

相关文章:

hibernate - hibernate 投影列表

java - JVM 使用 Intel 编译器编译

java - Controller属于Presentation层?

java - 错误 : parse error before "double" (cygwin)

java - 避免 Hibernate LazyInitializationExceptions 的架构

java - hibernate : Inserting data set missing parameters to null in database

java - 将整数打印到新行直到某个点

java - Thymeleaf:在同一页面上显示两个 JPA 实体表的数据

java - 使用 Spring-Data 回收 MySql 表内存

java - Spring JPA规范