mysql - Hibernate HQL - 如果一个属性可能为空怎么办

标签 mysql hibernate hql

我需要通过这个查询从我的数据库中获取用户:

SELECT * FROM users
WHERE first_name = 'Aragorn'
AND last_name = 'SonOfAratorn'
AND city = 'Osgiliot'
AND country = 'Gondor'

问题是在我的应用程序中,我经常会缺少城市或国家/地区,或者两者都缺少。

我可以为此进行 3 或 4 个 HQL 查询,但这似乎不是一个非常有效的解决方案。

有没有一种方法只有一个查询来适应这些属性(城市和国家/地区)中的一个或两个为空的情况,我如何将该查询转换为 HQL?

我的数据库在 MySql Server 上。

附言:

我试过类似的方法,但没有成功:

SELECT * FROM users
WHERE first_name = 'Aragorn'
AND last_name = 'SonOfAratorn'
AND city like IFNULL('%', <my-city-param>)
AND country like IFNULL('%', <my-country-param>);

我正在寻找 HQL 格式的类似内容。

提前致谢。 :)

最佳答案

勾选coalesce函数;

coalesce(:valueifnotnull,'valueifnull') 

应该可以解决问题

关于mysql - Hibernate HQL - 如果一个属性可能为空怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39852811/

相关文章:

mysql - GROUP BY 得到前两行

mysql - 一对多/多对多 SQL

php - 重用 MySQL 结果

java - hibernate 3 : unable to query PostgreSQL database

java - 在 Hibernate 条件结果中排除 bean 的字段

hibernate - 无法访问 hql namedQuery 中的独立域对象

php - 状态 200 = HttpPut 有效吗?

java.lang.NullPointerException 因为我没有访问该表的权限

java - 在 HQL 和 MySql 数据库中使用 TRIM LEADING 函数

java - hibernate 业务对象可以用作整洁架构中的实体吗?