2017-04-19 8 views
0

私は、休止状態を使用しなければならない作業とビューにマップされるいくつかのクラスを与えられます。タスクは、私はクラスの完全なオブジェクトを返すことはありませんが、クラスのいくつかの属性を持つオブジェクトが初期化された1つのビューを選択する必要が作成する必要があります。私は最初にパラメータとしてこれらのフィールドを取得するコンストラクタを作成することを考えましたが、私は両方の可能性を開いている(クラスの一部とフルクラス)を保持するWeb上の任意のソリューションを見つけることができません。どんな提案も大歓迎です。コードや詳細な説明が必要な場合は、それを求めてください。休止状態で完全なオブジェクトを取得しないようにする

答えて

1

jpqlクエリを作成するか、criteria APIを使用して、必要な属性を選択することができます。

JPQLチュートリアルでは、http://docs.oracle.com/javaee/6/tutorial/doc/bnbtg.html

基準であるあなたは、コードの下に使用することができますhttp://docs.oracle.com/javaee/6/tutorial/doc/gjivm.html

+0

私は実際に基準を使用していますが、特定の属性のみを選択する部分は見つかりません。私に例を教えてもらえますか?またはselectの中に 'root.get(attributes)'を持つ部分ですか? – XtremeBaumer

+0

あなたはどのように私は1000レコードの最大をフェッチすることができますが、結果が1000よりも大きいかどうかを確認する任意のアイデアはありますか?現在私は 'setMaxResults()'を使用しています – XtremeBaumer

+0

root.get(属性)は私がこれまで知っている唯一の方法です –

0

です。

あなたは(からCreateQueryでネイティブSQLクエリを使用)し、あなただけ、あなたはゲッターとセッターとのCustomerProfile.classを作成するために必要がある適切なクラスに

Query query = ((SQLQuery) getSession().createSQLQuery(
       "select First_name,Last_name,email_id,.. from view_name where customer_id=:customer_id"). 
       setResultTransformer(Transformers.aliasToBean(CustomerProfile.class))).    
       setParameter("customer_id", cutsomer_id) 
       ;  
     List<CustomerProfile> list = query.list(); 

をあなたの結果を変換することができます必要なパラメータを取得することができます。

+0

これはネイティブSQLのために少し休止状態の作業を無効にすると思います – XtremeBaumer

+0

あなたの質問には、view.AFAIKからデータを取得したいとします。視野に主キーを作成することはできません。そして、Hibernateはそのモデルにプライマリキーを持たせる必要があります。私は、ビューからデータをフェッチする唯一の方法は、hibernateでネイティブSQLを使用していると思います。 – Vaibs

+0

これはあなたが間違っているところです。ビューが存在する場合は、代わりにビューに「テーブル」注釈を指定するだけで済みます。これは完全にうまく動作します。私はすでに全体の暴力でそれをやっているし、今はオブジェクトのちょうどの部分でもやっている – XtremeBaumer

関連する問題