相关疑难解决方法(0)

如何在hibernate本机查询中使用MySQL assign运算符(:=)?

我正在使用Hibernate.我写了一些原生查询,因为我需要使用sub select语句.

查询看起来像这样:

SELECT sub.rownum FROM 
    (SELECT k.`news_master_id` AS id, @row := @row + 1 AS rownum 
        FROM keyword_news_list k 
        JOIN (SELECT @row := 0) r 
        WHERE k.`keyword_news_id` = :kid
    ORDER BY k.`news_master_id` ASC) AS sub 
WHERE sub.id  = :nid
Run Code Online (Sandbox Code Playgroud)

当我像这样运行此查询时:

sessionFactory.getCurrentSession()
    .createSQLQuery(query)
    .setParameter("kid", kid)
    .setParameter("nid", nid)
    .uniqueResult();
Run Code Online (Sandbox Code Playgroud)

出现此异常:

org.hibernate.QueryException: Space is not allowed after parameter prefix ':' ....
Run Code Online (Sandbox Code Playgroud)

这可能是因为:=操作员.我发现了一些Hibernate问题.这个问题仍然存在.这个问题没有解决办法吗?

java mysql hibernate nativequery

18
推荐指数
3
解决办法
1万
查看次数

如何在JPA本机查询中使用':'?

我正在做一些数据分析,我有一个 SQL 查询,用于SELECT ..., @rownum:=@rownum+1 as row_number, ...获取行号和结果。但是,当我将其放入 JPA 方法的本机查询中(使用 Spring Boot / Spring Data JPA)时,出现以下异常:

Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: Space is not allowed after parameter prefix ':' 
Run Code Online (Sandbox Code Playgroud)

我已添加@Query(nativeQuery = true,到我的方法中,并更改了我的参数,例如where first_name = :firstnamewhere first_name = ?1@Param我的方法参数中删除了注释,但它没有帮助。

有没有办法在这个查询中转义冒号,或者有其他方法来分配不使用冒号的 rownum 变量?

java mysql jpa spring-data-jpa

6
推荐指数
1
解决办法
3432
查看次数

标签 统计

java ×2

mysql ×2

hibernate ×1

jpa ×1

nativequery ×1

spring-data-jpa ×1