在下面的代码中..
有两个别名作为Entity Object参考。
有时"caseStage" as stage在数据库中可以是null
"caseStage"为null时,我希望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)

07-26 06:05