Hibernate Criteria,createAlias()如果Alias是Null

时间:2016-11-21 06:57:33

标签: java hibernate alias hibernate-criteria criteriaquery

在下面的代码中.. 有两个别名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();

2 个答案:

答案 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中进行了测试