我正在尝试将简单的HQL转换为Criteria API,任何人都可以帮助我吗?这是我的HQL:
SELECT ch FROM Parent p JOIN p.childeren ch WHERE p.id = :id
结果我得到了孩子 . 重要的是,从孩子到父母没有任何关系 . 父母对这样的孩子只有这样的关系:
@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
@JoinColumn(name="parent_id")
private List children;
如何使用criteria-api获得相同的结果?
3 回答
只使用Criteria API获取关联实体是一个巨大的痛苦 . 您需要子查询:
这个问题的一个可能的解决方案是使用 sqlRestriction ,如下例所示,但这并不好,因为它需要使用数据库列名 .
Criteria crit = sessionFactory.getCurrentSession().createCriteria(Child.class); crit.add(Restrictions.sqlRestriction("{alias}.parent_id = ?", parentId, LongType.INSTANCE));
有人有更好的解决方案吗?
您不需要查询,因为您可以这样做: