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