0

次のような通常のSQLクエリがあります。

  String sql = "select * from Comm c where " +
        "c.id in (select max(c.id) from Comm c, ReadComm rc where c.createdby=1 or (c.createdby = 1 and rc.userid=5) and c.id=rc.commid group by c.commThread) " +
        "and c.isdelete = false order by c.senton desc";

そのようなクエリを基準に変換することは可能ですか? 私はそれについてグーグルで調べましたが、そのようなタイプの例は得られませんでした。

ありがとうございました。

4

1 に答える 1

0

はい、 DetachedCriteria とSubqueriesを見てください。

このようなもの:

// Create subquery
DetachedCriteria sub = DetachedCriteria.forClass(Comm.class, "sub");
sub.createAlias("sub.readComm", "rc");
sub.add(Restrictions.or(Restrictions.eq("sub.createdby", 1), ...
sub.setProjection(Projections.max("sub.id"));

// Create main query
Criteria.forClass(Comm.class)
   .add(Subqueries.propertyEq("id", sub)) // id property == value of subquery
   .add(Restrictions.eq("isdelete", false))
   .addOrder(Order.desc("senton"))
   .list();
于 2013-07-23T14:00:08.563 に答える