Как я могу преобразовать этот запрос Sql в запросе критериев - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть этот запрос:

SELECT * from (SELECT
*, (
  6371 * acos (
  cos ( radians(38.749817) )
  * cos( radians( 39.116917 ) )
* cos( radians(  -9.290633 ) - radians(-8.953753) )
  + sin ( radians(38.749817) )
  * sin( radians( 39.116917 ) )
) ) AS distance
FROM amb.sync_collection_points ) as t
WHERE distance > 30
order by distance
limit 20

, и я хочу использовать Criteria api для решения этой проблемы, но я новичок в этом, и я действительно не знаю, как действовать дальше.

Это то, что я получил до сих пор:

    SessionFactory session = HibernateUtil.getSessionJavaConfigFactory();
    CriteriaBuilder cb = session.getCriteriaBuilder();
    CriteriaQuery<SyncCollectionPoints> cr = cb.createQuery(SyncCollectionPoints.class);
    Root<SyncCollectionPoints> root = cr.from(SyncCollectionPoints.class);
    Session sess = session.openSession();
    List<Predicate> predicates = new ArrayList<Predicate>();

                for (String residue : residues) {
                    predicates.add(cb.like(root.get("residuesToSearch"), "%" + "\"family_name\":\"" + residue.toLowerCase()  + "%"));
                }



                cr.select(root).where(predicates.toArray(new Predicate[] {}));

       List<SyncCollectionPoints> result= q.getResultList();

, как вы можете видеть, я уже запустил запрос, и он отлично работает, но я хочу добавить оба в один.

...