2013-06-20 2 views
0

JSP 형식에 특정 엔티티를로드하려고하면 다음 오류 메시지가 표시됩니다. 이것은 "USER"유형의 엔터티를로드하려고 할 때 발생합니다. 문제가 at com.mysite.bookingmeeting.dao.implementation.UserProfileDaoImpl.findAllUsers(UserProfileDaoImpl.java:47)at org.apache.jsp.admin.ManageUsers_jsp._jspService(ManageUsers_jsp.java:133)에있다이 오류 메시지에 따르면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) 

: 그래서 여기에 오류 메시지입니다. 특정 페이지에서 해당 코드를 확인했지만 이전에는 제대로 작동했지만 몇 가지 이유로 지금은 작동하지 않습니다.

방법 findAllUsers() UserProfileDaoImpl()의 클래스는 다음과됩니다의 코드

: ManageUsers.jsp에 대한

@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; 
    } 

그리고 코드는 다음입니다 :

<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

나는이 문제를 해결했으며 String 형 변수를 UserProfile 형 변수로 설정하려고 시도했다.

관련 문제