Hibernate HQL查询空列

时间:2010-11-30 17:29:42

标签: hibernate null hql

我有一个简单的HQL SELECT查询。当列不为null时,我能够检索记录。但是,如果其中一列为null,则不会获得具有空列的记录。

以下是HQL查询示例:

SELECT p.name as name, p.price as price
FROM  Pets p

如果名称或价格为空,我不会获得该特定记录的任何条目。我认为Hibernate只会在该列为空时返回该值的空值?

当列为空时,如何提供备用值?

我已经使用Hibernate Console对其进行了测试。

2 个答案:

答案 0 :(得分:0)

要确认两件事:

  1. 您的模型名为Pets,对吗?或者是Pet
  2. 你真的只想要那两个属性吗?通常的方法是检索完整对象,例如from Pet
  3. 但即使这样也应该可以正常工作(假设模型名为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