Hibernate Criteria,createAlias() 如果 Alias 为 Null

Hibernate Criteria, createAlias() If Alias is Null

在下面的代码中.. 有两个 Alias 作为 Entity Object Reference。 有时 "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();

将CriteriaSpecification.LEFT_JOIN设置为别名函数

.createAlias("branch", "br", CriteriaSpecification.LEFT_JOIN) .createAlias("caseStage", "stage", CriteriaSpecification.LEFT_JOIN)

@Koti Eswar 答案是正确的,但现在已弃用。

应该这样做:

        join('branch', JoinType.LEFT)
        createAlias('branch', 'br')

在 Grails 3.3.5 中测试