自定义Hibernate标准 - 向左连接添加条件

时间:2010-05-14 03:59:05

标签: hibernate join criteria

我需要能够做到以下几点:

从Table1中选择*    左边连接表2,id1 = id2和i1 =?

Hibernate标准不允许指定i1 =?一部分。

现有代码使用的是hibernate标准,它将是一个巨大的重构来换出HQL

有没有人有任何提示我如何以不同方式实现或以任何方式覆盖Hibernate Criteria?我并不反对破解开放式休眠和修改,但是当我开始挖掘它时,似乎层层抽象。我从来没有发现实际生成SQL的地方......

2 个答案:

答案 0 :(得分:13)

这似乎是我需要的......

http://opensource.atlassian.com/projects/hibernate/browse/HHH-2308

即。

public Criteria createAlias(String associationPath, String alias, int joinType, Criterion withClause) throws HibernateException;

public Criteria createCriteria(String associationPath, String alias, int joinType, Criterion withClause) throws HibernateException;

答案 1 :(得分:0)

您可以使用抓取模式加入。你可以这样做:

Criteria criteria = session.createCriteria(Table1.class);
criteria.setFetchMode(table2OutputList, FetchMode, JOIN);
criteria.add(Restrictions.eq("i1", i1Value);
return criteria.list();

在这种情况下,您必须在运行此查询之前获取table2OutputList。这个article可以为您提供更好的主意;