在进行左连接时如何返回空Object而不是Null

时间:2013-05-17 10:52:46

标签: java hibernate

我有一个字段:Entity类的“Country”是可选的。该国家/地区是指包含具有国家/地区属性的ID列表的表格。

为了在我的表中包含没有给出Country的行,我使用了:

.....createAlias("country_Id", "Co", Criteria.LEFT_JOIN);

我更希望为Entity对象的country字段返回一个空的Country对象而不是null。

对于初学者来说,我的方法是获取所有表格行,有/无国家/地区的行是否正确? 或者有更好的方法吗?

最后你会建议创建一个拦截器来将null转换为空国家对象吗?否则,我将在处理返回的搜索结果的代码中处理它,方法是添加IF(null)语句。

1 个答案:

答案 0 :(得分:1)

如果字段为空,您可以尝试COALESCE函数返回新的国家/地区: SELECT COALESCE(Co, new Country()) ...。但您可能必须将主实体绑定到Country实体,而不是使用country_Id

[编辑] 它也可以与CriteriaBuilder一起使用: cb.coalesce(root.get("Co"), new Country()) /!\将对所有结果行使用相同的默认Country实例