@Override @Transactional(value="defaultTransactionManager") public void clearDuplicateRefreshTokens() { Query query = manager.createQuery("select a.jwt, count(1) as c from OAuth2RefreshTokenEntity a GROUP BY a.jwt HAVING count(1) > 1"); @SuppressWarnings("unchecked") List<Object[]> resultList = query.getResultList(); List<JWT> values = new ArrayList<>(); for (Object[] r : resultList) { logger.warn("Found duplicate refresh tokens: {}, {}", ((JWT)r[0]).serialize(), r[1]); values.add((JWT) r[0]); } if (values.size() > 0) { CriteriaBuilder cb = manager.getCriteriaBuilder(); CriteriaDelete<OAuth2RefreshTokenEntity> criteriaDelete = cb.createCriteriaDelete(OAuth2RefreshTokenEntity.class); Root<OAuth2RefreshTokenEntity> root = criteriaDelete.from(OAuth2RefreshTokenEntity.class); criteriaDelete.where(root.get("jwt").in(values)); int result = manager.createQuery(criteriaDelete).executeUpdate(); logger.warn("Deleted {} duplicate refresh tokens", result); } }
@Override @Transactional(value="defaultTransactionManager") public void clearDuplicateAccessTokens() { Query query = manager.createQuery("select a.jwt, count(1) as c from OAuth2AccessTokenEntity a GROUP BY a.jwt HAVING count(1) > 1"); @SuppressWarnings("unchecked") List<Object[]> resultList = query.getResultList(); List<JWT> values = new ArrayList<>(); for (Object[] r : resultList) { logger.warn("Found duplicate access tokens: {}, {}", ((JWT)r[0]).serialize(), r[1]); values.add((JWT) r[0]); } if (values.size() > 0) { CriteriaBuilder cb = manager.getCriteriaBuilder(); CriteriaDelete<OAuth2AccessTokenEntity> criteriaDelete = cb.createCriteriaDelete(OAuth2AccessTokenEntity.class); Root<OAuth2AccessTokenEntity> root = criteriaDelete.from(OAuth2AccessTokenEntity.class); criteriaDelete.where(root.get("jwt").in(values)); int result = manager.createQuery(criteriaDelete).executeUpdate(); logger.warn("Deleted {} duplicate access tokens", result); } }
@Override public int deleteAll() { return execute(session -> { CriteriaBuilder builder = session.getCriteriaBuilder(); CriteriaDelete<T> delete = builder.createCriteriaDelete(getEntityClass()); delete.from(getEntityClass()); return session.createQuery(delete).executeUpdate(); }); }
public <T> int deleteAllEntities(Class<T> entityType) { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaDelete<T> query = builder.createCriteriaDelete(entityType); query.from(entityType); return em.createQuery(query).executeUpdate(); }
// Criteria API (JPA 2.1 and above) CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaDelete<MyEntity> query = builder.createCriteriaDelete(MyEntity.class); query.from(MyEntity.class); em.createQuery(query).executeUpdate();
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaDelete<SomeClass> query = criteriaBuilder.createCriteriaDelete(SomeClass.class); Root<SomeClass> root = query.from(SomeClass.class); query.where(root.get("id").in(listWithIds)); int result = entityManager.createQuery(query).executeUpdate();
CriteriaBuilder cBuilder = em.getCriteriaBuilder(); CriteriaDelete<T> cq = cBuilder.createCriteriaDelete(entityClass); Root<T> root = cq.from(entityClass); cq.where(/*some codition*/); int result = em.createQuery(cq).executeUpdate();
/** * @return {@link CriteriaDelete<T>} */ @Override public CriteriaDelete<T> createCriteriaDelete() { return this.criteriaBuilder().createCriteriaDelete(this.persistentClass); }
/** * @param classe * @return {@link CriteriaDelete <V>} * @throws Exception */ @Override public <V> CriteriaDelete<V> createCriteriaDelete(Class<V> classe) throws Exception { checkArgument(classe != null, "The Parameter classe must not be null."); return criteriaBuilder().createCriteriaDelete(classe); }
/** * @return {@link CriteriaDelete<T>} */ public final CriteriaDelete<T> createCriteriaDelete() { return this.criteriaBuilder().createCriteriaDelete(this.persistentClass); }
/** * @param classe * @return {@link CriteriaDelete <V>} * @throws Exception */ @Override public <V> CriteriaDelete<V> createCriteriaDelete(Class<V> classe) throws Exception { checkArgument(classe != null, "The Parameter classe must not be null."); return criteriaBuilder().createCriteriaDelete(classe); }
protected <E extends Identifiable, T> void _deleteGlobalRecordsForType(E entity, EntityManager em, Class<T> clazz) { if(JPAEntity.class.isAssignableFrom(entity.getClass())) { JPAEntity jpaEntity = JPAEntity.class.cast(entity); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaDelete<T> update = cb.createCriteriaDelete(clazz); Root<T> from = update.from(clazz); update.where(cb.equal(from.get("entity"), jpaEntity)); em.createQuery(update).executeUpdate(); }else { throw new IllegalArgumentException("Entity - " + entity.getClass() + " is not of type JPAEntity"); } }
protected <E extends Identifiable, T> void _deleteGlobalRecordsForType(E entity, EntityManager em, Class<T> clazz) { if(JPAEntity.class.isAssignableFrom(entity.getClass())) { JPAEntity jpaEntity = JPAEntity.class.cast(entity); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaDelete<T> update = cb.createCriteriaDelete(clazz); Root<T> from = update.from(clazz); update.where(cb.equal(from.get("entity"), jpaEntity)); em.createQuery(update).executeUpdate(); }else { throw new IllegalArgumentException("Entity - " + entity.getClass() + " is not of type JPAEntity"); } }
/** * {@inheritDoc} */ @Override public Query createDeletionQuery(Class queryClazz, TranslationContext criteria) { CriteriaDelete jpaQuery = entityManager.getCriteriaBuilder().createCriteriaDelete(queryClazz); if (!criteria.predicates.isEmpty()) { jpaQuery = jpaQuery.where(criteria.getCriteriaPredicate()); } return entityManager.createQuery(jpaQuery); }
@Override public void delete(Long primaryKey) { transactionControl.required(() -> { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaDelete<PersonEntity> query = builder.createCriteriaDelete(PersonEntity.class); Root<PersonEntity> from = query.from(PersonEntity.class); query.where(builder.equal(from.get("personId"), primaryKey)); em.createQuery(query).executeUpdate(); logger.info("Deleted Person with ID : {}", primaryKey); return null; }); }
@Override public void delete(Long personId) { transactionControl.required(() -> { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaDelete<AddressEntity> query = builder.createCriteriaDelete(AddressEntity.class); Root<AddressEntity> from = query.from(AddressEntity.class); query.where(builder.equal(from.get("person").get("personId"), personId)); em.createQuery(query).executeUpdate(); return null; }); } }
@Override public void delete(Long personId) { transactionControl.required(() -> { CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaDelete<AddressEntity> query = builder.createCriteriaDelete(AddressEntity.class); Root<AddressEntity> from = query.from(AddressEntity.class); query.where(builder.equal(from.get("person").get("personId"), personId)); em.createQuery(query).executeUpdate(); return null; }); } }
@Override public int deleteAllDepartments() { CriteriaBuilder cb = this.em.getCriteriaBuilder(); CriteriaDelete<Department> cd = cb.createCriteriaDelete(Department.class); cd.from(Department.class); return this.em.createQuery(cd).executeUpdate(); } }
protected static <T extends Model> void deleteAll(final Class<T> clazz, final Filter filter) { execute(manager -> { CriteriaBuilder builder = manager.getCriteriaBuilder(); CriteriaDelete<T> deleteQuery = builder.createCriteriaDelete(clazz); Root<T> root = deleteQuery.from(clazz); filter.constructQuery(builder, deleteQuery, root); Query query = createQuery(deleteQuery, filter); return query.executeUpdate(); }, false); }
@Transactional public void deleteAll() { CriteriaDelete<EntityWithCDIAwareBridges> delete = entityManager.getCriteriaBuilder() .createCriteriaDelete( EntityWithCDIAwareBridges.class ); delete.from( EntityWithCDIAwareBridges.class ); entityManager.createQuery( delete ).executeUpdate(); }