在尝试为我的应用创建API时,我尝试创建一个传入值的查询,然后从db返回响应。
@Query(value = "SELECT u FROM User u WHERE u.userID = ?")
User getUserById(String id);
我在其他项目中以这种方式创建了查询,但无法弄清楚为什么我在这个项目中出现以下错误
JDBC style parameters (?) are not supported for JPA queries.
答案 0 :(得分:4)
@Query(value = "SELECT u FROM User u WHERE u.userID = :id")
User getUserById(String id);
答案 1 :(得分:1)
Legacy-style query parameters (`?`) are no longer supported;
这是因为休眠不为占位符(?)提供支持,您需要将代码更改为在休眠中使用named parameters
的代码。
有效。
@Query(value = "SELECT u FROM User u WHERE u.userID = :inputUserId")
User getUserById(String inputUserId);
:inputUserId // named parameter
以下是避免使用占位符(?)的原因。
弃用Hibernate特定的(JDBC样式)位置参数 JPA风格的支持。
答案 2 :(得分:0)
使用 positioning 参数
的 XML 方法在HQL中遇到相同的问题 异常:不再支持旧式查询参数(?
)
HQL查询
String hql = "from Customer cust where cust.city=?";
解决方案:如下更改hql查询
String hql = "from Customer cust where cust.city=?0";
然后我们开始!
答案 3 :(得分:0)
String hql = "from Customer cust where cust.city= :city";
Query<Customer> query = session.createQuery(hql,Customer.Class);
query.setParameter("city",id);//here id is your value
答案 4 :(得分:0)
我提供了两个有关如何在休眠状态下编写参数化查询的示例。
{{1}}