簡體   English   中英

在寧靜的Web服務中使用沒有主鍵的Hibernate從MySQL檢索數據

[英]retrieving data from mysql using hibernate without primary key in restful web service

我正在使用restful web service開發Web應用程序。 我已經使用了hibernatePOJO進行mysql communication

我有具有用戶表的數據庫,主要數據庫是empid 為了獲得單行,我將empid從html頁面傳遞到了Web服務,並將json對象返回到html頁面(使用javascript進行解析)。

我已經使用這一行從數據庫where empid=277;獲得單行, where empid=277; //在這里硬編碼

new_user =(用戶)session.get(User.class,(long)277);

我想從employeeid的其他列中檢索記錄(NOT empid,empid是主鍵)

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

我已經從html頁面(字符串)傳遞了employeeid

我寫過像

    @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)

如果我刪除了Query語句,並取消注釋代碼,則該塊為

    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);

謝謝

請使用查詢方法uniqueResult()。

 Query query = session.createQuery("from user where employeeid= :employee");
 query.setParameter("employee", employeeid);
 new_user = (User) query. uniqueResult();

您發布的客戶端異常無濟於事,可以提供服務器端異常stacktrace嗎? 我們必須知道什么冬眠的抱怨

解決,

代替

Query query = session.createQuery("from user where employeeid= :employee");
query.setParameter("employee", employeeid);

我已經添加了,

Query query = session.createQuery("from user where employeeid='" + employeeid + "'");

而且效果很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM