相关疑难解决方法(0)

是否可以在Spring Repository中使用原始SQL

我需要在Spring Data Repository中使用原始SQL,这可能吗?我看到的一切@Query都是基于实体的.

java hibernate spring-data-jpa

95
推荐指数
5
解决办法
15万
查看次数

如何在JPA中使用预准备语句

我是一个Play框架应用程序Developer.I我在JPA中使用createNativeQuery方法.在这个例子中,我想使用预准备语句.请有人帮帮我吗?这是没有JPA的代码.我需要帮助才能将其转换为Prepared语句.

Query query = JPA.em().createNativeQuery("select count(*) from truck t inner join" +
    "box b where t.truck_id=b.truck_id and t.shipment_upc='" + code + "'");

BigInteger val = (BigInteger)query.getSingleResult();
System.out.println(val);
Run Code Online (Sandbox Code Playgroud)

jpa prepared-statement playframework-2.1

9
推荐指数
2
解决办法
2万
查看次数

在 Hibernate 中使用 @Query 进行带参数的本机查询

我正在尝试使用名为的序列对 MariaDb 10.3 参数化 @Query 方法F0001

本教程的第 5.2 节中,有一个示例

5.2. 本机查询的本机索引参数的工作方式与 JPQL 完全相同:

@Query(
  value = "SELECT * FROM Users u WHERE u.status = ?1", 
  nativeQuery = true)
User findUserByStatusNative(Integer status);
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做同样的事情时(使用序列)

@Query(value = "SELECT NEXTVAL(?1)", nativeQuery = true)
Long getNextSequenceByFleetId(String fleetId);
Run Code Online (Sandbox Code Playgroud)

尽管数据库中的序列设置正确,但它对我不起作用。

SELECT NEXTVAL(F0001)  --> returns nextval 2
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?

谢谢。

PS:我看到了这篇文章,但示例没有使用@Query注释。


更新 :

按照@JB Nizet 在评论中的建议,我尝试使用 SpEL:

https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions

@Query("select u from User u where u.age = ?#{[0]}")
List<User> findUsersByAge(int age);
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

@Query(value …
Run Code Online (Sandbox Code Playgroud)

hibernate jpql mariadb spring-data-jpa spring-boot

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