2017-10-03 6 views
0

休止状態で私はユニークな結果を得ています。どのようにクエリのオブジェクトを動的にキャストできますか?

Criteria criteria=session.createCriteria(basepackagePath+this.castingClass); 
    criteria.add(Restrictions.eq("ClassName", className)); 
    (this.castingClass)criteria.uniqueResult(); 

問題:criteria.uniqueResult()の結果をキャストすることはできません。

  1. 私は

  2. this.castingClass文字列を持つクラスを取得しようとしましたが

が起こっていないお勧めしてくださいをキャストするための完全なパッケージパスを述べた:私はを試してみました何

どのようにオブジェクトの名前を保持しているStringを使ってオブジェクトを動的にキャストできますか?

+2

コンパイル時にクラスが分からないとすれば、それを達成するにはどうしますか?キャスティングなしではできないキャストバージョンではどうしたらいいですか?コンパイル時に型を知らないので、余分なメソッドなどを呼び出すことはできません。 –

+0

@PaŭloEbermannの回答はhttps://stackoverflow.com/questions/6808130/class-forname-castsでご利用いただけます –

答えて

0

cast -Methodを使用して、criteria.uniqueResult()の結果を動的にキャストできます。

Criteria criteria=session.createCriteria(basepackagePath+this.castingClass); 
criteria.add(Restrictions.eq("ClassName", className)); 
Class.forName(this.castingClass).cast(criteria.uniqueResult()); 
関連する問題