Tengo el siguiente código:
private static void registrarProducto() {
Categoria celulares = new Categoria("CELULARES");
Producto celular = new Producto("Samsung","Teléfono usado",new BigDecimal("1000"),celulares);
EntityManager em = JPAUtils.getEntityManager();
ProductoDao productoDao = new ProductoDao(em);
CategoriaDao categoriaDao = new CategoriaDao(em);
em.getTransaction().begin();
em.persist(celulares);
em.persist(celular);
em.flush();
em.clear();
celular = em.merge(celular);
celular.setDescripcion("Teléfono nuevo");
em.flush();
em.close();
}
Donde persisto la categoria y producto, luego hago un flush y luego realizo la actualización del producto (en estado managed, gracias al merge), sin embargo cuando ejecuto el siguiente main es como si no hubiera agregado nada a la base de datos (tampoco tengo un Excepcion):
public static void main(String[] args) {
registrarProducto();
EntityManager em = JPAUtils.getEntityManager();
ProductoDao productoDao = new ProductoDao(em);
List<Producto> productos = productoDao.consultarTodos();
System.out.println("Número de productos: " + productos.size());
}
El resultado es el siguiente (Número de productos: 0):