0

複数のテーブルを結合して基準を使用して結合しようとしていますが、問題が発生しています。助けてください:次のような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

これら 3 つのテーブル: CutOffTime (国を含む)、Country、Exchange (国を含む) は 3 つのエンティティ クラスです。

休止状態の基準を使用してこのように参加するにはどうすればよいですか、以下のコードはまだ完了していません:

 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();
            }
        });
4

1 に答える 1

0

国からどこへも双方向の関係がないため、単一の結合を使用して休止状態から実行することはできないと思います。したがって、2 つの別個の結合が必要であり、2 番目の結合で結果をフィルタリングする必要があると思います。 countrrID in (最初の結合の国 ID)

于 2013-05-09T08:06:58.110 に答える