2016-04-30 7 views
1

В моем файле сопоставления спящего режима, чтобы получить ПОЛНОЕ ИМЯ сотрудника, я определил формулу столбца следующим образом.Hibernate Column Формула, возвращающая нуль

<property name="empFirstName" column="emp_First_Name" type="string" 
     not-null="false" lazy="false" /> 
    <property name="empLastName" column="emp_Last_Name" type="string" 
     not-null="false" lazy="false" /><property name="fullName" formula="concat(emp_First_Name, ' ', emp_Last_Name)" /> 

Но она возвращает нулевой если один из собственности (либо или отчества) является нуль. Как я могу заставить его возвращать пустую строку для свойства null.?

ответ

0

Вы можете попробовать использовать COALESCE() по всей формуле колонки:

<property name="fullName" 
      formula="select coalesce(concat(emp_First_Name, ' ', emp_Last_Name), '') from employee" /> 

Путь COALESCE(A, B) работает в JPA или необработанного SQL является то, что он выводит A когда A не равно нулю, и выводит B когда A равна нулю ,

+0

По-прежнему у меня такая же проблема :( – Jai

+0

Спасибо U @TimBiegeleisen Это помогает много – Jai

0

Я думаю, ваша проблема в том, как обращаться с null, если каждое свойство (firstName или lastName) получает значение null.

В своем коде вы должны сделать что-то вроде этого (создание объекта и установить FirstName и LastName)

Например:
String firstName = "Joe"; account.setFirstname(firstName);

Просто вы можете проверить ПгвЬЫат с нулевым значением и сделать его пустым, как это

if(firstName.equal(null)) 
    firstName = ""; // set an empty value to it. 

Надеюсь, это поможет вам!

+0

Да, безусловно ... Это путь @MohammadRezaKhatami – Jai

0

Понял ...

COALESCE (A, B) возвращает, если А не равно нулю и возвращает B, если А является нулевым

Поэтому то, что мне нужно здесь

CONCAT(COALESCE(emp_First_Name,''),'',COALESCE(emp_Last_Name,'')) 

следовательно, если одно из свойств равно null, другое свойство возвращается, а не null. Пустая строка возвращается, если оба свойства равны нулю

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