2013-06-20 641 views
0

我獲得以下錯誤消息,當我嘗試特定實體加載到我的JSP形式。當我嘗試加載類型爲「USER」的實體時,會發生這種情況。因此,這裏的錯誤消息:java.lang.IllegalArgumentException異常:不能將java.lang.String中字段錯誤

WARNING: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception 
java.lang.IllegalArgumentException: Can not set java.lang.String field com.mysite.bookingmeeting.user.UserProfile.userName to java.lang.Long 
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164) 
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168) 
    at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:55) 
    at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36) 
    at java.lang.reflect.Field.get(Field.java:372) 
    at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:32) 
    at org.hibernate.tuple.component.AbstractComponentTuplizer.getPropertyValue(AbstractComponentTuplizer.java:64) 
    at org.hibernate.tuple.component.AbstractComponentTuplizer.getPropertyValues(AbstractComponentTuplizer.java:70) 
    at org.hibernate.tuple.component.PojoComponentTuplizer.getPropertyValues(PojoComponentTuplizer.java:86) 
    at org.hibernate.type.ComponentType.getPropertyValues(ComponentType.java:353) 
    at org.hibernate.type.ComponentType.getHashCode(ComponentType.java:184) 
    at org.hibernate.engine.EntityUniqueKey.generateHashCode(EntityUniqueKey.java:63) 
    at org.hibernate.engine.EntityUniqueKey.<init>(EntityUniqueKey.java:44) 
    at org.hibernate.type.EntityType.loadByUniqueKey(EntityType.java:596) 
    at org.hibernate.type.EntityType.resolve(EntityType.java:382) 
    at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116) 
    at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854) 
    at org.hibernate.loader.Loader.doQuery(Loader.java:729) 
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) 
    at org.hibernate.loader.Loader.doList(Loader.java:2220) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) 
    at org.hibernate.loader.Loader.list(Loader.java:2099) 
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) 
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) 
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) 
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) 
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) 
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65) 
    at com.mysite.bookingmeeting.dao.implementation.UserProfileDaoImpl.findAllUsers(UserProfileDaoImpl.java:47) 
    at org.apache.jsp.admin.ManageUsers_jsp._jspService(ManageUsers_jsp.java:133) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:770) 
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:328) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
    at java.lang.Thread.run(Thread.java:722) 

根據此錯誤消息的問題在於at com.mysite.bookingmeeting.dao.implementation.UserProfileDaoImpl.findAllUsers(UserProfileDaoImpl.java:47)at org.apache.jsp.admin.ManageUsers_jsp._jspService(ManageUsers_jsp.java:133)。我已經在這些特定頁面中檢查了這些代碼,並且他們之前工作良好,但由於某些原因,現在它不起作用。

爲方法findAllUsers()UserProfileDaoImpl()的類以下的代碼:

@Override 
    public Collection<UserProfile> findAllUsers() { 
     EntityManager em = getEntityManager(); 
     Query q = em.createQuery("SELECT u FROM UserProfile u WHERE u.userType = 'USER'"); 
     List<UserProfile> results; 
     results = q.getResultList(); 
     return results; 
    } 

和代碼ManageUsers.jsp是以下:

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Manage Users</title> 
    </head> 
    <body> 
     <h2>Create User</h2> 
     <%@include file="../WEB-INF/jspf/createUser.jspf" %> 
     <h2>Delete Users</h2> 
     <%@include file="../WEB-INF/jspf/DeleteUserForm.jspf" %> 
    </body> 
</html> 

我有在沒有DeleteUserForm.jspf的情況下測試了上面的文件,並且沒有問題,效果很好,所以主要原因是DeleteUserForm.jsp這裏這種形式的代碼如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@page import="java.util.Collection"%> 
<%@page import="com.mysite.bookingmeeting.user.UserProfile"%> 
<%@page import="com.mysite.bookingmeeting.dao.implementation.UserProfileDaoImpl"%> 
<%@page import="com.mysite.bookingmeeting.dao.UserProfileDao"%> 
<% 
    UserProfileDao userProfiles = new UserProfileDaoImpl(); 
    Collection<UserProfile> allUsers = userProfiles.findAllUsers(); 

    session.setAttribute("users", allUsers); 
%> 
<%@ page pageEncoding="UTF-8" %> 
<form name="deleteUser" action="DeleteUserServlet"> 
    <table border="0"> 
     <tbody> 
      <tr> 
       <td>User Name: </td> 
       <td><select name="deleteUsers" multiple="multiple"> 
         <c:forEach var="users" items="${users}"> 
          <option value='<c:out value="${users.getId()}"/>'> 
           <c:out value="${users.firstName}"/> 
           <c:out value="${users.lastName}"/> 
          </option> 
         </c:forEach> 
        </select> 
       </td> 
      </tr> 
      <tr> 
       <td></td> 
       <td><input type="submit" value="Delete Users" /></td> 
      </tr> 
     </tbody> 
    </table> 
</form> 

此代碼還合作過,但現在它不工作。任何幫助真的很感激。

回答

-1

我解決了這個問題,我發現我試圖設置字符串類型變量USERPROFILE類型變量。

相關問題