0

我有一个字段:可选的实体类的“国家/地区”。country 是指包含具有国家属性的 id 列表的表。

为了在我的表中包含没有给出国家/地区的行,我使用了:

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

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

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

最后,您会建议创建一个拦截器将 null 转换为 Empty Country 对象吗?否则,我将通过添加 IF(null) 语句在处理返回的搜索结果的代码中处理它。

4

1 回答 1

1

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

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

于 2013-05-17T12:13:01.547 回答