使用hibernate标准连接多个表

时间:2013-05-09 07:46:36

标签: java sql-server hibernate hibernate-criteria

我正在尝试加入多个表来加入使用条件,但遇到一些问题,请帮助我: 我有一个SQL查询,如:

SELECT  a.type, a.time, c.code AS exchangeCode
 FROM   CutOffTime AS a INNER JOIN
       Country AS b ON a.country_fk = b.id INNER JOIN
       Exchange AS c ON c.country_fk = b.id

这三个表:CutOffTime(有国家),国家,交换(有国家)是3个实体类。

我如何使用hibernate标准这样加入,我的代码仍未完成:

 List<Map<String, Object>> aa= ( List<Map<String, Object>>) getHibernateTemplate().executeFind(new HibernateCallback() {
            @Override
            public Object doInHibernate(final Session session) throws HibernateException, SQLException {
                final Criteria c = session.createCriteria(CutOffTime.class,"cutofftime");
                c.createAlias("cutofftime.country", "country");

                final Criteria c2= session.createCriteria(Exchange.class,"exchange");
                c2.createAlias("exchange.country", "country");
//              c.add(Restrictions.eqProperty("cutofftime.country.id","exchange.country.id"));
                return c.list();
            }
        });

1 个答案:

答案 0 :(得分:0)

我认为你不能通过单一连接从休眠中完成它,因为你没有从国家到任何地方的双向关系。所以我认为你必须有2个单独的连接,然后过滤导致第二次加入,使得countrrID(第一次加入的国家ID)