У меня есть этот запрос:
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();
, как вы можете видеть, я уже запустил запрос, и он отлично работает, но я хочу добавить оба в один.