This is my error message when I try to delete one user from person table:
HTTP Status 500 - 


type Exception report
message
descriptionThe server encountered an internal error () that prevented it from 
fulfilling this request.
exception javax.servlet.ServletException: java.lang.IllegalArgumentException: 
An exception occured while creating a query in EntityManager

root cause java.lang.IllegalArgumentException: An exception occured while 
creating a query in EntityManager

root cause Exception [TOPLINK-8004] (Oracle TopLink Essentials - 2.1 (Build 
b60e-fcs (12/23/2008))): oracle.toplink.essentials.exceptions.EJBQLException
Exception Description: Error compiling the query [Delete  from Person p where 
ID = 39], line 1, column 29: unknown identification variable [id]. The FROM 
clause of the query does not declare an identification variable [id].

note The full stack traces of the exception and its root causes are available 
in the Sun GlassFish Enterprise Server v2.1 logs.


Sun GlassFish Enterprise Server v2.1
My DeletePersonServlet which was called have this code:
�...@persistenceunit
    //The emf corresponding to
    private EntityManagerFactory emf;
    @Resource
    private UserTransaction utx;
    protected void processRequest(HttpServletRequest request, 
HttpServletResponse response)
    throws ServletException, IOException {
        assert emf != null;  //Make sure injection went through correctly.
        EntityManager em = null;
        try {
            //Get the data from user's form
            HttpSession session = request.getSession();
            String id         = (String) session.getAttribute("id");
            String firstName  = (String) session.getAttribute("firstName");
            String lastName   = (String) session.getAttribute("lastName");
            //Create a person instance out of it
            Person person = new Person(id, firstName, lastName);
            //begin a transaction
            utx.begin();
            //create an em.
            //Since the em is created inside a transaction, it is associsated 
with
            //the transaction
            em = emf.createEntityManager();
            //delete the person entity
             Query squery = em.createQuery("Delete  from Person p where ID = " 
+ id);
             //squery.setParameter(1, id);
             squery.executeUpdate();
            
            //commit transaction which will trigger the em to
            //commit newly created entity into database
            utx.commit();
            //Forward to ListPerson servlet to list persons along with the newly
            //created person above
            request.getRequestDispatcher("ListPerson").forward(request, 
response);
        } catch (Exception ex) {
            throw new ServletException(ex);
        } finally {
            //close the em to release any resources held up by the persistebce 
provider
            if(em != null) {
                em.close();
            }
        }
    } 
 
I notice that it took id from last one created person, not from one I want, I 
set attribute 
with: <c:set value="id" scope="session" var="${person.id}"/>
 
But I just dont know how to set right id like is done for
<h:commandLink...>
<f:param.../>
</h:commandLink>
 
because this 
 


      
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Java 
EE (J2EE) Programming with Passion!" group.
To post to this group, send email to 
java-ee-j2ee-programming-with-passion@googlegroups.com
To unsubscribe from this group, send email to 
java-ee-j2ee-programming-with-passion+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/java-ee-j2ee-programming-with-passion?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to