0

を使用してWebアプリケーションを開発していますrestful web service。と を使用hibernatePOJOましたmysql communication

ユーザーテーブルを持つデータベースがあり、プライマリはempid. 単一の行を取得するために、empid を html ページから Web サービスに渡し、json オブジェクトを html ページに返します (解析には JavaScript が使用されます)。

これを使用して、DB から単一の行を取得しましたwhere empid=277; // ここにハードコードされています

new_user = (ユーザー) session.get(User.class, (long)277);

employeeidのような他の列からレコードを取得したい(empidではなく、empidは主キーです)

select * user where employeeid="XX-123XD"

employeeid文字列であるfrom htmlページを渡しました。

私は次のようなWebサービスを書きました

    @POST
    @Path("/getjson")
    @Produces("application/json")
    public JSONObject sendjson(String employeeid) {

            Gson gsonobj = new Gson();
            JSONObject jsonobj = null;

            SessionFactory fact;
            fact = new Configuration().configure().buildSessionFactory();
            User new_user = null;

            Session session = fact.getCurrentSession();
            Transaction tx =  session.beginTransaction();
            Query query = session.createQuery("from user where employeeid= :employee");
            query.setParameter("employee", employeeid);
            //new_user = (User) session.get(User.class, (long)277);
            new_user = (User) query.list();

        try {    
            String jsonstr = gsonobj.toJson(new_user);
            jsonobj = new JSONObject(jsonstr);
        } catch (JSONException ex) {
            Logger.getLogger(Authneticate.class.getName()).log(Level.SEVERE, null, ex);
        }
        return jsonobj;
    }

しかし、次のようなエラーが表示されます。

type Exception report

message com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class org.codehaus.jettison.json.JSONObject, and Java type class org.codehaus.jettison.json.JSONObject, and MIME media type text/html; charset=utf-8 was not found

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class org.codehaus.jettison.json.JSONObject, and Java type class org.codehaus.jettison.json.JSONObject, and MIME media type text/html; charset=utf-8 was not found
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause

com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java class org.codehaus.jettison.json.JSONObject, and Java type class org.codehaus.jettison.json.JSONObject, and MIME media type text/html; charset=utf-8 was not found
    com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:561)
    com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:517)
    org.apache.jsp.HomeUser_jsp._jspService(HomeUser_jsp.java:91)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

クエリステートメントを削除し、コードのコメントを外すと、そのブロックは

    Session session = fact.getCurrentSession();
    Transaction tx =  session.beginTransaction();
    //Query query = session.createQuery("from user where employeeid= :employee");
    //query.setParameter("employee", employeeid);
    new_user = (User) session.get(User.class, (long)277);
    //new_user = (User) query.list();

その後、機能し、empid=277主キーである期待される結果が得られます。

私がクエリで間違っていること。そして、休止状態で主キーなしでデータを取得する他の方法はありますか

`new_user = (User) session.get(User.class, employeeid);`
                                                  |
                                          String(Not the primary key)

JSONオブジェクトを取得する私のjspファイルは

<%

Client client = Client.create();
WebResource service = client.resource("http://localhost:8080/ITHelpdesk/webresources/hello/getjson");
String input = request.getParameter("username");
ClientResponse cliresponse = service.type("text/html").post(ClientResponse.class,input);
JSONObject jsonobj = cliresponse.getEntity(JSONObject.class);

%>

使用してみnew_user = (User) query.uniqueResult(); ました その後も同じエラーが発生しました JSONObject jsonobj = cliresponse.getEntity(JSONObject.class);

ありがとうございました

4

3 に答える 3

0

Query メソッドの uniqueResult() を使用してください。

 Query query = session.createQuery("from user where employeeid= :employee");
 query.setParameter("employee", employeeid);
 new_user = (User) query. uniqueResult();
于 2013-08-02T06:11:30.313 に答える
0

あなたが投稿したクライアント側の例外は役に立ちません。サーバー側の例外スタックトレースを提供できますか? 休止状態の苦情を知る必要があります

于 2013-08-02T07:01:15.520 に答える