Pregunta

Estoy luchando un poco con el concepto de alias en Hibernate.
Mi situación es la siguiente:
Ordenar

@OneToMany(cascade=CascadeType.ALL,mappedBy="m_order")
private Set<OrderDetail> m_details; 

Detalle de la orden

    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="product_id")
    private Product m_product;
    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="order_id")
    private Order m_order;

Dao

c.createAlias("m_details", "detail").createCriteria("detail.m_product").add(Expression.idEq(productId));

Así que quiero buscar cada pedido que contenga un producto.
Sin embargo, con esta consulta sigue devolviendo 0 pedidos y realmente no veo lo que estoy haciendo mal.
¡Gracias!

¿Fue útil?

Solución

La consulta me parece bien ... intente configurar "hibernate.show_sql" en "verdadero" para que realmente pueda ver el SQL en el sistema.out o/y log it log4j.logger.org.hibernate.sql = Debug, Sql_appender

@Lars Sí, puedes. API de criterios - asociacionesEl alias es solo un nombre corto de un nombre completo/carcriterios de ruta.

Otros consejos

No estoy seguro de que puedas usar alias para cosas que no son una columna, es decir, no tiene el @Column o @JoinColumn-anotación.

Eso se ve correcto.

En su sección DAO, ya tiene una variable llamada 'C': ¿puede publicar el código donde se inicializa esto? Eso es solo para verificar que esté creando los criterios originales con el orden.class.

Luego, lo siguiente que debe verificar si puede retener el producto con esa identificación con lo siguiente:

Product p = (Product)session.load(Product.class, productId)

De esa manera, está revisando que la identificación es correcta y Hibernate puede encontrar ese producto.

Si no tendríamos que comenzar a mirar el SQL generado como lo han sugerido los otros comentaristas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top