2016-11-21 38 views
1

在下面的代码中.. 有两个别名为Entity Object引用。 有时"caseStage" as stage可以在数据库中为null。 当"caseStage"为空我想stage.name值作为空String或定制的东西像"---"休眠标准,createAlias()如果别名为空

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

我通常在HQL中使用coalesce(stage.name,'---'),所以有没有Criteria Query的机制? –

+0

你面临的问题是什么?请解释一下? – Zulfi

+0

如何在屏幕上显示对象不应在数据库查询中决定和指定。修改您的表示层代码,以便在值为空时显示您想要的任何内容。 –

回答

2

设置CriteriaSpecification.LEFT_JOIN到别名功能

.createAlias( “分支”, “BR” CriteriaSpecification.LEFT_JOIN) .createAlias(“caseStage”,“stage”,CriteriaSpecification.LEFT_JOIN)

+0

亲爱的兄弟,有没有什么办法可以使用'CriteriaSpecification.LEFT_JOIN'与'DetachedCriteria'? –