我有一个简单的HQL SELECT查询。当列不为null时,我能够检索记录。但是如果其中一列为null,我就无法获取该具有null列的记录。
下面是示例HQL查询:
SELECT p.name as name, p.price as price
FROM Pets p
如果名称或价格为空,我将不会获取该特定记录的任何条目。我以为当它为空时,Hibernate 只会返回一个 null 值给该列呢?
当该列为空时,如何提供替代值?
我已经在 Hibernate 控制台上进行了测试。
确认两件事:
Pets
,对吗?还是 Pet
?from Pet
。但即使如此,(前提是模型名为Pets
),应该也能正常工作。您是否遇到了任何异常,或者只是得到一个空列表?Hibernate 生成的 SQL 是什么(您可以通过将属性 hibernate.show_sql
设置为 true 来查看)?如果在数据库中手动运行这个 SQL,是否会得到任何记录?
可能有点晚回复了,但希望能对其他人有所帮助!
我认为这里的Hibernate会给你一个包含所有NULL项的对象数组列表。如果你想查看它,只需尝试打印结果列表和数组的大小即可。
另一种方法是修改你的代码如下:
SELECT new Pets(p.name, p.price)
FROM Pets p
同时添加一个Pets bean的构造函数,以设置名称和价格。
现在您可以在列表中看到Pets beans,其中名称和价格的值为null。有关在HQL中部分初始化bean的更多信息,请参见此处。