我在冬眠中的别名概念上有些挣扎。
我的情况如下:
命令

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

订单详情

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

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

因此,我想搜索包含产品的每个订单。
但是,有了此查询,它将不断返回0个订单,我真的看不到我在做什么错。
谢谢!

有帮助吗?

解决方案

查询对我来说看起来还不错...尝试将“ hibernate.show_sql”设置为“ true”,因此您实际上可以在System.Out或/和/and/and/and log4j.logger.org.org.hibernate.sql = debug = debug = debug,debug,debug,debug,debug,debug,debug, sql_appender

@lars是的。 标准API-协会别名只是全名/路径碳纤维的一个短名。CREATEALIAS(“ Car_parts.Wheels”,“ Wheels”)

其他提示

我不确定您是否可以将别名用于不是列的东西,即没有 @Column 或者 @JoinColumn-注解。

看起来正确。

在您的DAO部分中,您已经有一个名为“ C”的变量 - 您可以发布初始化的代码吗?这只是为了仔细检查您是否正在使用order.class创建原始标准。

然后,下一步要检查是否可以使用该ID进行以下ID重新读取产品:

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

这样,您正在检查ID是否正确,Hibernate可以找到该产品。

如果没有像其他评论者所建议的那样,我们不得不开始研究生成的SQL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top