2016-11-21 116 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'? –