2017-10-06 5 views
0

i」のNetBeansのウィザードから生成された安らかなWebサービスVEの。IDに基づいて、データベースからデータを取得する方法を取得している(選択* ID = someId例から)、1つの結果を返します。二つのパラメータ

私はのは、複数の結果を返すことが、私はこのエラーになりますどの名前を言わせて、異なる基準を試してみた:

javax.servlet.ServletException:java.lang.ClassCastExceptionが: java.lang.Stringでは、することはできませんキャストウェブ。バラン

誰かが任意のヘルプは非常にこれが私のファイルです

を理解されるであろう、この問題を解決する方法を教えてくださいすることができます

私のNamedQuery(barang.java)

@NamedQuery(名前=「Barang .cariId」、クエリ= "Barang BからBを選択 b.postCategoryId =:postCategoryId AND b.status = 'tersedia"')

私の機能(AbstractFacade.java)

public T cariId(Integer postCategoryId) { 
    return (T) getEntityManager().createNamedQuery("Barang.cariId").setParameter("postCategoryId", postCategoryId).getResultList().toString(); 
} 

私のGETメソッド(barangfacadeRest.java)

@GET 
@Path("cariId/{postCategoryId}") 
@Produces({"application/xml", "application/json"}) 
public Barang cariId(@PathParam("postCategoryId") int postCategoryId) { 
    return super.cariId(postCategoryId); 
} 
+0

'toString'呼び出しを削除すると、何が得られますか? – ujulu

+0

こんにちは、thxは返信します。結果は変わりません。何か案が? –

答えて

0

Tは、ジェネリック型パラメータである場合、私は何かが欠けていると思います。これに加えて、クエリがタイプBarangのオブジェクトのみを返すことができるため、このメソッドを汎用的に定義するのは意味をなさない。次のようにだから私はそれを書き換えます:

public Barang cariId(Integer postCategoryId { 
    TypedQuery<Barang> q = em.createNamedQuery("Barang.cariId", Barang.class); 
    q.setParameter("postCategoryId", postCategoryId); 
    List<Barang> result = q.getResultList(); 
    if (result != null && !result.isEmpty()) { 
     return result.get(0); 
    } 
    return null; 
} 

他のものが正しければ、これはClassCastException例外を削除する必要があります。

+0

ありがとうございます。 しかし、私はまだコードにエラーが発生します。 ここに私のsc: https://ibb.co/dxBzBG 私はあなたを助けたいと思う、私は多数のフォーラムに私の質問を掲示し、誰も答えを与える。あなただけの私の最後の希望。 もう一度、ありがとうございます。 –

+0

サーバーのエラーはこれです。 https://ibb.co/cCUY5b私を助けるため –

+0

Mr.ujulu おかげで、私のコードは、あなたが歓迎されている –