2016-11-21 7 views
1

В приведенном ниже коде. Есть два псевдонима, как Entity Object Ссылка. Иногда "caseStage" as stage может быть null в базе данных. Когда "caseStage" равна нулю, я хочу stage.name значение как пустой String или что-то подгонять как "---" и т.д.Критерий спящего режима, createAlias ​​() Если Alias ​​Null

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

Обычно я использую coalesce (stage.name, '---') в HQL, так есть ли какой-либо механизм для запроса Criteria? –

+0

В чем проблема, с которой вы сталкиваетесь .. пожалуйста, объясните, что ?? – Zulfi

+0

Как вы показываете свои объекты на экране, не следует определять и указывать в запросе базы данных. Измените код уровня презентации, чтобы отобразить все, что угодно, в случае, если значение равно null. –

ответ

2

Установите CriteriaSpecification.LEFT_JOIN для функции псевдонима

.createAlias ​​(«филиал», «BR», CriteriaSpecification.LEFT_JOIN) .createAlias ​​(«caseStage», «stage», CriteriaSpecification.LEFT_JOIN)

+0

Дорогой брат, есть ли способ использовать 'CriteriaSpecification.LEFT_JOIN' с' DetachedCriteria'? –

 Смежные вопросы

  • Нет связанных вопросов^_^