Bem pessoal, sou novo com Hibernate e estou com um problema. Tenho um Servlet que recebe requisições, faz select no banco e tenta atualizar o objeto no banco.
Por algum motivo o banco só atualiza o objeto na segunda, quarta, sexta… vez que o método é executado, ou seja, nas execuções pares. O código do servlet é o seguinte:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
System.out.println("There is a request!");
PrintWriter out = response.getWriter();
String firstName = request.getParameter("first_name");
String lastName = request.getParameter("last_name");
String whoAmI = request.getParameter("who_am_i");
String email = request.getParameter("email");
Session session = DatabaseManager.getSessionFactory().openSession();
Transaction tr = session.beginTransaction();
User u = (User) session.createCriteria(User.class)
.add(Restrictions.eq("email", email))
.uniqueResult();
u.setFirstName(firstName);
u.setLastName(lastName);
u.setWhoAmI(whoAmI);
session.update(u);
tr.commit();
session.close();
out.append("response");
out.flush();
out.close();
}
O XML de configuração é o seguinte:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/database</property>
<property name="connection.username">username</property>
<property name="connection.password">password</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- Mapping files -->
<mapping class=".User"/>
</session-factory>
</hibernate-configuration>
valeu