我正在使用restful web service
開發Web應用程序。 我已經使用hibernate
和POJO
到mysql communication
。使用休眠狀態下的無主鍵休眠狀態下從mysql中檢索數據
我有數據庫,其中有用戶表和主要是empid
。 爲了獲得單行,我已經將HTML頁面中的empid傳遞給web服務,並將json對象返回給html頁面(javascript用於解析)。
我已經使用這個之一從DB where empid=277;
獲得單列//這裏硬編碼
new_user =(用戶)session.get(User.class,(長)277);
我想要從像僱員另一列記錄(不EMPID,EMPID是主鍵)
select * user where employeeid="XX-123XD"
我已經通過了由html頁面是字符串employeeid
。
我寫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
的預期結果。
我在做什麼錯誤的查詢。 並在那裏與Hibernate任何其他方式來獲得無主鍵 數據,如
`new_user = (User) session.get(User.class, employeeid);`
|
String(Not the primary key)
我的JSP文件,獲取JSON對象是
<%
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);
謝謝
我試圖與這一點,但錯誤仍然存在。我在更新中提出了問題 –
您正在使用query.list();它返回列表,你正在投擲列表到用戶對象,這就是爲什麼它拋出異常 –
我已經嘗試與query.list()。getIndex(0)也同樣的錯誤 –