在下面的代码中..
有两个别名Entity Object
参考。
有时"caseStage" as stage
可以是数据库中的null
。
当"caseStage"
为空时,我希望stage.name
值为空String
或自定义内容,如"---"
等。
session.createCriteria(CaseMasterPO.class)
.createAlias("branch", "br") // BranchPO.class
.createAlias("caseStage", "stage") // CaseStagePO.class
.setProjection(Projections.projectionList()
.add(Projections.property("caseCode"))
.add(Projections.property("br.zoneCode"))
.add(Projections.property("stage.name")) // Problem, when stage == null
)
.add(Restrictions.eq("caseCode", caseCode)).uniqueResult();
答案 0 :(得分:4)
将CriteriaSpecification.LEFT_JOIN设置为别名函数
.createAlias(" branch"," br",CriteriaSpecification.LEFT_JOIN) .createAlias(" caseStage"," stage",CriteriaSpecification.LEFT_JOIN)
答案 1 :(得分:1)
@Koti Eswar的答案是正确的,但现在已弃用。
应该这样做:
join('branch', JoinType.LEFT)
createAlias('branch', 'br')
在Grails 3.3.5中进行了测试