我需要能够做到以下几点:
从Table1中选择* 左边连接表2,id1 = id2和i1 =?
Hibernate标准不允许指定i1 =?一部分。
现有代码使用的是hibernate标准,它将是一个巨大的重构来换出HQL
有没有人有任何提示我如何以不同方式实现或以任何方式覆盖Hibernate Criteria?我并不反对破解开放式休眠和修改,但是当我开始挖掘它时,似乎层层抽象。我从来没有发现实际生成SQL的地方......
答案 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可以为您提供更好的主意;