Hola! estoy teniendo un problema al mostrar el resultado por consola, dejo mi codigo de productoDAO y de mi main:
Main
public static void main(String[] args) {
Categoria celulares = new Categoria("celulares");
registrarProducto();
EntityManager entityManager = JPAUtils.getEntityManager();
ProductoDAO productoDAO = new ProductoDAO(entityManager);
Producto motorola2 = new Producto("Moto one zoom",
"Usado, en perfecto estado",
new BigDecimal("500"),
celulares);
Producto motorola3 = new Producto("Moto one hyper",
"Usado, en perfecto estado",
new BigDecimal("570"),
celulares);
CategoriaDAO categoriaDAO = new CategoriaDAO(entityManager);
entityManager.getTransaction().begin();
categoriaDAO.devolverEstadoMerge(celulares); //esto es el metodo merge()
categoriaDAO.guardar(celulares); //esto es el metodo persist()
productoDAO.guardar(motorola2);
productoDAO.guardar(motorola3);
List<Producto> productoList = productoDAO.findByName("Moto");
productoList.forEach(prod -> System.out.println(prod.getDescripcion()));
entityManager.getTransaction().commit();
entityManager.close();
}
private static void registrarProducto() {
Categoria celulares = new Categoria("celulares");
Producto motorola = new Producto("Moto one vision",
"Usado, en perfecto estado",
new BigDecimal("449"),
celulares);
EntityManager entityManager = JPAUtils.getEntityManager();
ProductoDAO productoDAO = new ProductoDAO(entityManager);
CategoriaDAO categoriaDAO = new CategoriaDAO(entityManager);
entityManager.getTransaction().begin();
productoDAO.guardar(motorola);
categoriaDAO.guardar(celulares);
entityManager.getTransaction().commit();
entityManager.close();
}
ProductoDAO
public class ProductoDAO {
public List<Producto> findByName(String nombre){
String jpql = "SELECT P
FROM Producto AS P
WHERE P.nombre LIKE :nombre";
return entityManager
.createQuery(jpql)
.setParameter("nombre", nombre)
.getResultList();
}
}
Log de consola
Hibernate:
create table categorias (
id bigint generated by default as identity,
nombre varchar(255),
primary key (id)
)
Hibernate:
create table productos (
id bigint generated by default as identity,
descripcion varchar(255),
fechaRegistro date,
nombre varchar(255),
precio numeric(19,2),
categoria_id bigint,
primary key (id)
)
Hibernate:
alter table productos
add constraint FK2fwq10nwymfv7fumctxt9vpgb
foreign key (categoria_id)
references categorias
Hibernate:
insert
into
productos
(id, categoria_id, descripcion, fechaRegistro, nombre, precio)
values
(default, ?, ?, ?, ?, ?)
Hibernate:
insert
into
categorias
(id, nombre)
values
(default, ?)
Hibernate:
update
productos
set
categoria_id=?,
descripcion=?,
fechaRegistro=?,
nombre=?,
precio=?
where
id=?
Hibernate:
insert
into
categorias
(id, nombre)
values
(default, ?)
Hibernate:
insert
into
categorias
(id, nombre)
values
(default, ?)
Hibernate:
insert
into
productos
(id, categoria_id, descripcion, fechaRegistro, nombre, precio)
values
(default, ?, ?, ?, ?, ?)
Hibernate:
insert
into
productos
(id, categoria_id, descripcion, fechaRegistro, nombre, precio)
values
(default, ?, ?, ?, ?, ?)
Hibernate:
select
producto0_.id as id1_1_,
producto0_.categoria_id as categori6_1_,
producto0_.descripcion as descripc2_1_,
producto0_.fechaRegistro as fechareg3_1_,
producto0_.nombre as nombre4_1_,
producto0_.precio as precio5_1_
from
productos producto0_
where
producto0_.nombre like ?
Tambien me pasa lo mismo si cambio lo siguiente en la funcion findByName()
String jpql = "SELECT P
FROM Producto AS P
WHERE P.nombre=:nombre";
MI duda es: porque NO me esta dando la resultList en mi Main para poder loguearlo por consola?
PD: seria genial que aumenten la cantidad de palabras por hilo, con 5000 me quede corto, tuve que sacar codigo interesante para la consulta
PD2: con el metodo "consultarPorNombreDeCategoria()" uso LIKE y anda bien, me devuele una resultList que se imprime en consola, no asi con el metodo findByName()
Desde ya muchas gracias