我正在使用HQL进行搜索查询,一切正常,直到我找到LIKE子句.无论我做什么,似乎都没有正确执行LIKE子句.这是我的查询.
String QUERY = "FROM Person as p WHERE p.createUser = : createUser
AND p.personId in (SELECT pn.personId FROM PersonName pn WHERE pn.personNameType = 'FIRST' AND pn.name LIKE '%:firstName%')";
(List<Person>)session.createQuery(QUERY).setString("createUser", createUser).setString("firstName", firstName).list();
Run Code Online (Sandbox Code Playgroud)
axt*_*avt 57
字符串文字内的参数未解析.
您需要在%
字符串连接的参数值中添加s - 在程序端
String QUERY = "FROM Person as p WHERE p.createUser = : createUser
AND p.personId in " +
"(SELECT pn.personId FROM PersonName pn " +
"WHERE pn.personNameType = 'FIRST' " +
"AND pn.name LIKE :firstName)";
(List<Person>)session.createQuery(QUERY)
.setString("createUser", createUser)
.setString("firstName", "%" + firstName + "%").list();
Run Code Online (Sandbox Code Playgroud)
或在数据库方面:
String QUERY = "FROM Person as p WHERE p.createUser = : createUser
AND p.personId in " +
"(SELECT pn.personId FROM PersonName pn " +
"WHERE pn.personNameType = 'FIRST' " +
"AND pn.name LIKE CONCAT('%', :firstName, '%'))";
(List<Person>)session.createQuery(QUERY)
.setString("createUser", createUser)
.setString("firstName", firstName).list();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
42707 次 |
最近记录: |