2017-02-06 8 views
1

休止状態でCOALESCEを使用する必要がありますか?これを実装する方法はありますか?私は、ハイバネート5.0を使用しています。休止状態のCOALESCE機能

答えて

2

JPAの仕様では、このためのAPIがあります: CriteriaBuilder.Coalesce

インタフェースは、合体式を構築するために使用されます。合体式は、すべての引数が と評価された場合にnullを返すcase式に相当する と、それ以外の最初のNULLでない引数の値が0以外の場合は です。最新のHibernateのバージョンのよう

、代わりに、特定のものを休止..あなたはこのようなものに終わるだろうのJPQL基準を使用することをお勧めします

CriteriaBuilder builder = em.getCriteriaBuilder(); 
CriteriaQuery<String> query = cb.createQuery(String.class); 
Root<User> user= query.from(User.class); 

CriteriaBuilder.Coalesce<String> coalesceExp = builder.coalesce(); 
coalesceExp.value(user.get("name")); 
coalesceExp.value(user.get("surname")); 
coalesceExp.value(user.get("middlename")); 
query.select(coalesceExp); 

Query q = em.createQuery(query); 

一番下の行はあなたということですこの方法を使用

CriteriaBuilder.Coalesce<T> value(T value) 

又は

CriteriaBuilder.Coalesce<T> value(Expression<? extends T> value) 

あなたのニーズに合わせてcoalesc式を記入してください