Hibernate Criteria Subquery HibernateException:未知实体:null

时间:2016-04-17 20:26:42

标签: hibernate subquery detachedcriteria

范围是获取Bid创建的所有userId元素,并且是Project projectId AND的一部分,其中存在{{1}在Decision字符串为Bid的{​​{1}}上。

但是,我得到了一个

Verb.verb
尝试将其实现为以下一对查询和子查询时的

异常:

"accepted"

这些是我的实体。我故意避免双向依赖。

org.hibernate.HibernateException: Unknown entity: null

我尝试过一些别名的组合,但是无法找到合适的组合。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

这最终对我有用:

DetachedCriteria accepedBidIds = DetachedCriteria.forClass(DecisionOnBid.class, "d")
        .createAlias("d.verb", "d_v")
        .add(Restrictions.eq("d_v.verb", "accept"))
        .createAlias("d.bid", "d_b")
        .setProjection(Projections.property("d_b.id"));

Criteria query = sessionFactory.getCurrentSession().createCriteria(Bid.class,"b")       
        .add(Restrictions.eq("creator.id", userId))
        .createAlias("b.cbtion","b_c")
        .createAlias("b_c.project","b_c_p")
        .add(Restrictions.eq("b_c_p.id", projectId))
        .add(Subqueries.propertyIn("b.id", accepedBidIds));

@SuppressWarnings("unchecked")
List<Bid> bids = (List<Bid>) query.list();

并非所有更改都是必需的。我认为关键是要使用很多alieases,特别是createCriteria(Bid.class,"b")在开始时我并不清楚。