Здравствуйте!
Подскажите реализацию возможности выполнения SQL-запросов на JMIX.
Добрый день.
В Jmix нет специальных средств для выполнения native SQL запросов, достаточно того, что предоставляет Spring.
- Создаете Spring Bean
- Инжектируете javax.persistence.EntityManager с помощью аннотации @PersistentContext
- Вызываете entityManager.createNativeQuery()
- Управляете транзакцией вручную (org.springframework.transaction.support.TransactionTemplate) или с помощью @org.springframework.transaction.annotation.Transactional
Пример:
@Component
public class NotificationService {
@PersistenceContext
private EntityManager entityManager;
@Transactional
public void markAsReadWithEntityManager(UUID notificationId) {
entityManager.createNativeQuery("update NOTIFICATION set IS_READ = true where ID = ?")
.setParameter(1, notificationId)
.executeUpdate();
}
}
Ну или инжектируете DataSource
и используете JdbcTemplate
который в Spring или любой другой JDBC API.
Добрый день!
Если в native SQL использовать select и выводить результат в Table или DataGrid, то пейджинг, фильтрацию и сортировку потребуется самостоятельно обрабатывать или jmix сможет сам добавлять необходимые правки в SQL ?
Jmix умеет трансформировать дерево объектов Condition
, а также параметры paging/sorting, приходящие в DataManager
, в условия JPQL-запроса.
Для native SQL это придется делать самостоятельно.