2016-04-30 8 views
1

私の休止状態のマッピングファイルでは、従業員のフルネームを取得するために、次のようにColumn Formulaを定義しました。Hibernate Column Formula nullを返す

<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)" /> 

しかし、プロパティ(FIRSTまたはLAST NAMEのいずれか)のいずれかがヌルある場合はnullをを返します。どのようにnullプロパティの空の文字列を返すようにすることができます..?

答えて

0

あなたは全体の列式にCOALESCE()を使用して試みることができる:

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

JPAや生のSQLでCOALESCE(A, B)作品はAがnullでない場合、それはAを出力し、Aがnullであるとき、それはBを出力しない方法。

+0

まだ同じ問題が発生しています:( – Jai

+0

ありがとうございます@TimBiegeleisenそれはたくさんの助けになります – Jai

0

それぞれのプロパティ(firstNameまたはlastName)がnullになると、nullを処理する方法が問題だと思います。たとえば

あなたはこのような何か(オブジェクトの作成をして、姓と名を設定する)必要がありますあなたのコードで


String firstName = "Joe"; account.setFirstname(firstName);

単にあなたがNULL値でのfirstNameをチェックし、それがこのように空にすることができます

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

この情報がお役に立てば幸いです。

+0

これは間違いなく@MohammadRezaKhatamiです – Jai

0

は、Aがnullでなく、Bを返した場合、Aがnullの場合

。したがって、私はここに必要なもの

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

ある

COALESCE(A、B)はAを返します...それを手に入れましたしたがって、プロパティの1つがnullの場合、もう一方のプロパティが返され、nullではありません。両方のプロパティがnullの場合、空の文字列が返されます

関連する問題