User-Flow, поиск, редактирование информации о себе
This commit is contained in:
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.Transaction;
|
||||
import org.hibernate.query.Query;
|
||||
|
||||
/**
|
||||
* Базовый репозиторий для работы с сущностями базы данных
|
||||
@@ -92,11 +93,27 @@ public abstract class Repository<T> {
|
||||
return executeInSession(session -> {
|
||||
String queryString = "FROM " + entityClass.getSimpleName() + " WHERE " + fieldName + " LIKE :value";
|
||||
return session.createQuery(queryString, entityClass)
|
||||
.setParameter("value", "%" + value + "%")
|
||||
.setParameter("value", value + "%")
|
||||
.list();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Поиск сущности по значению одного поля с использованием оператора LIKE и ограничения LIMIT
|
||||
* @param fieldName поле
|
||||
* @param value значение
|
||||
* @return найденная сущность или null
|
||||
*/
|
||||
public List<T> likeSearchAll(String fieldName, String value, int take) {
|
||||
return executeInSession(session -> {
|
||||
String queryString = "FROM " + entityClass.getSimpleName() + " WHERE " + fieldName + " LIKE :value";
|
||||
return session.createQuery(queryString, entityClass)
|
||||
.setParameter("value", value + "%")
|
||||
.setMaxResults(take)
|
||||
.list();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Поиск сущности по набору полей
|
||||
* @param fields карта полей и их значений
|
||||
@@ -212,6 +229,26 @@ public abstract class Repository<T> {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Выполняет запрос с параметрами и возвращает список сущностей
|
||||
* @param queryString SQL запрос
|
||||
* @param parameters параметры запроса
|
||||
* @return список сущностей
|
||||
*/
|
||||
public QuerySession<T> buildQuery(String queryString, HashMap<String, Object> parameters) {
|
||||
Session session = HibernateUtil.openSession();
|
||||
try {
|
||||
Query<T> query = session.createQuery(queryString, entityClass);
|
||||
for (var entry : parameters.entrySet()) {
|
||||
query.setParameter(entry.getKey(), entry.getValue());
|
||||
}
|
||||
return new QuerySession<>(session, query);
|
||||
} catch (Exception e) {
|
||||
session.close();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Подсчет сущностей по набору полей
|
||||
* @param fields карта полей и их значений
|
||||
|
||||
Reference in New Issue
Block a user