Возможно, это простой вопрос, но он должен работать уже на мой взгляд. Я хочу установить статус на каждом Аукционе, где expdate меньше текущей даты. expDate - это DATETIME в базе данных. На самом деле это не работает. Не могли бы вы помочь? Я также попытался с CURRENT_TIMESTAMPjpa datetime сравнить eclipselink
Query query = entityManager.createQuery("UPDATE Auction e SET e.status = 0 WHERE e.expDate < :today");
query.setParameter("today", new Date(), TemporalType.TIMESTAMP);
редактировать:
Query query = entityManager.createQuery("UPDATE Auction e SET e.status = 0 WHERE e.status = 1");
что не работает тоже. Я использую: @PersistenceContext() EntityManager entityManager;
Кажется, что запрос обновления не выполняется.
Вы вызывали query.executeUpdate() ;? createQuery предоставляет только объект запроса, который вы можете использовать для добавления подсказок и т. д. перед выполнением. – Chris
Я не могу использовать executeUpdate в non-transactional entityManager, полученный из PersistantContext –
да, для этого требуется транзакция. Если вы не используете JTA, оберните изменения в em.getTransaction(). Begin(); em.getTransaction() фиксации(). вызовы, в противном случае вам нужно будет обернуть свой метод в транзакцию или просмотреть его из контейнера, чтобы запустить его. – Chris