use*_*913 3 parameters jpa derby named-query
我有以下命名查询:
@NamedQuery(
name = "Userdetails.findByUsername",
query = "SELECT u FROM Userdetails u WHERE u.username = :username"
)
Run Code Online (Sandbox Code Playgroud)
当我尝试按如下方式执行时:
getEntityManager()
.createNamedQuery("Userdetails.findByUsername")
.setParameter("string", "%" + string + "%")
.getResultList();
Run Code Online (Sandbox Code Playgroud)
然后我得到以下异常:
java.lang.IllegalArgumentException:您试图使用查询字符串中不存在的字符串名称设置参数值SELECT u FROM Userdetails u WHERE u.username =:username.
这是怎么造成的,我该如何解决?
在您的Userdetails.findByUsername命名查询中,您有一个名为的参数username:
SELECT u FROM Userdetails u WHERE u.username = :username
Run Code Online (Sandbox Code Playgroud)
然后使用实体管理器调用它,但设置string参数:
getEntityManager()
.createNamedQuery("Userdetails.findByUsername")
.setParameter("string", "%" + string + "%") //<-- check here
.getResultList();
Run Code Online (Sandbox Code Playgroud)
将此string参数替换为username:
getEntityManager()
.createNamedQuery("Userdetails.findByUsername")
.setParameter("username", "%" + string + "%") //<-- check here
.getResultList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10913 次 |
| 最近记录: |