facebook

Hibernate session error

  1. MyEclipse IDE
  2.  > 
  3. Off Topic
Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #228427 Reply

    Frank
    Member

    Hello,

    I get the following error when I try and update a record.
    a different object with the same identifier value was already associated with the session: 8a8a94a903612f3c0103612f67260001, of class: com.stemc.Author

    My code looks like
    Session hibernateSession = null;
    Transaction myTransaction = null;
    Author myAuthor = null;

    if (request.getParameter(“Submit”) != null) {
    try {
    hibernateSession = HibernateSessionFactory.currentSession();
    myTransaction = hibernateSession.beginTransaction();
    myAuthor = new Author();
    myAuthor.setAuthorId(request.getParameter(“authorID”));
    myAuthor.setFirstName(request.getParameter(“first”));
    myAuthor.setLastName(request.getParameter(“last”));
    myAuthor.setHomePhone(request.getParameter(“homePhone”));
    hibernateSession.update(myAuthor);
    myTransaction.commit();
    hibernateSession.flush();
    response.sendRedirect(“index.jsp”);
    return;
    } catch (Exception e) {
    out.println(e.getMessage().toString());
    }
    }

    try {
    hibernateSession = HibernateSessionFactory.currentSession();
    myTransaction = hibernateSession.beginTransaction();
    myAuthor = new Author();
    myAuthor = (Author)hibernateSession.load(Author.class, request.getParameter(“authorID”));
    myTransaction.commit();
    hibernateSession.flush();
    } catch (Exception e2) {
    out.println(e2.getMessage().toString());
    }

    What am I doing wrong?

    Thanks
    Frank

    #228445 Reply

    Riyad Kalla
    Member

    Replace your hibernateSession.flush lines with .close(), you aren’t closing your sessions.

    #228473 Reply

    Frank
    Member

    I did as you suggested, now my app fails with null values.
    If I run http://localhost:8080/list_authors.jsp I get a listing.
    If I try and refresh the page I get a session closed message.

    try {
    hibernateSession = HibernateSessionFactory.currentSession();
    myTransaction = hibernateSession.beginTransaction();
    Criteria query = hibernateSession.createCriteria(Author.class);
    query.addOrder(Order.asc(“lastName”));
    authors = query.list().iterator();
    myTransaction.commit();
    hibernateSession.close();
    } catch (Exception e) {
    out.println(e.getMessage().toString());
    } finally {
    try { hibernateSession.close();}
    catch (Exception e2) {;}
    }

    #228476 Reply

    Riyad Kalla
    Member

    Ok, try flush then close 😀

    Moving to OT > Soft Dev, this is a straight Hibernate question BTW.

    #228478 Reply

    Frank
    Member

    Sorry if I posted wrong area. I did not mean to emply that ME was at fault.
    I still get the session closed.

    Here is my complete source:
    <%@ page language=”java” import=”java.util.*,net.sf.hibernate.*,com.stemc.*” %>
    <%@ page import=”net.sf.hibernate.Session” %>
    <%@ page import=”net.sf.hibernate.expression.Order” %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;
    Session hibernateSession = null;
    Transaction myTransaction = null;
    Iterator authors = null;

    try {
    hibernateSession = HibernateSessionFactory.currentSession();
    myTransaction = hibernateSession.beginTransaction();
    Criteria query = hibernateSession.createCriteria(Author.class);
    query.addOrder(Order.asc(“lastName”));
    authors = query.list().iterator();
    myTransaction.commit();
    hibernateSession.flush();
    hibernateSession.close();
    } catch (Exception e) {
    out.println(e.getMessage().toString());
    } finally {
    try { hibernateSession.close();}
    catch (Exception e2) {;}
    }
    %>

    <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
    <html>
    <head>
    <base href=”<%=basePath%>”>

    <title>My JSP ‘index.jsp’ starting page</title>

    <meta http-equiv=”pragma” content=”no-cache”>
    <meta http-equiv=”cache-control” content=”no-cache”>
    <meta http-equiv=”expires” content=”0″>
    <meta http-equiv=”keywords” content=”keyword1,keyword2,keyword3″>
    <meta http-equiv=”description” content=”This is my page”>

    <!–
    <link rel=”stylesheet” type=”text/css” href=”styles.css”>
    –>
    </head>

    <body>
    <h1>Author Listing</h1> <br>
    <% if (authors == null) { %>
    No authors defined!
    <% } else { %>
    <table width=”100%” border=”0″>
    <tr><th>Last Name</th><th>First Name</th></tr>
    <% while (authors.hasNext()) {
    Author myAuthor = (Author)authors.next(); %>
    <tr><td><%=myAuthor.getLastName() %></td>
    <td><%=myAuthor.getFirstName() %></td>
    <td><a href=”edit_author.jsp?authorID=<%=myAuthor.getAuthorId()%>”>Edit</a></td>
    <td><a href=”edit_author.jsp”>Delete</a></td></tr>
    <% } } %>
    </table>
    <hr />
    <p align=”right”><a href=”create_author.jsp”>Add Author</a></p>
    </body>
    </html>

    #228610 Reply

    Frank
    Member

    I solved this error.
    I was doing:

    hibernateSession = HibernateSessionFactory.currentSession();
    hibernateSession.close();

    instead of:
    hibernateSession = HibernateSessionFactory.currentSession();
    HibernateSessionFactory.closeSession();

    Regards,

    Frank

    #229765 Reply

    Cliff Nguyen
    Participant

    hi everybody,

    Instead of using:
    session.delete(YourObject);

    I used, everything goes ok:

    session.delete(YourObject);
    session.evict(YourObject);

Viewing 7 posts - 1 through 7 (of 7 total)
Reply To: Hibernate session error

You must be logged in to post in the forum log in