/** * Append ORDER BY clause based on metadata fields or column names. * All fields will be in ascending order. * @param query the query being built. * @param metadataSortFields fields on which to sort -- use this OR columnSortFields. * @param columnSortFields columns on which to sort -- use this OR metadataSortFields. */ protected void addMetadataSortQuery(StringBuilder query, List<MetadataField> metadataSortFields, List<String> columnSortFields) { addMetadataSortQuery(query, metadataSortFields, columnSortFields, ListUtils.EMPTY_LIST); }
/** * Find a DSO by its "legacy ID". Former versions of DSpace used integer * record IDs, and these may still be found in external records such as AIPs. * All DSOs now have UUID primary keys, and those should be used when available. * Each type derived from DSpaceObject had its own stream of record IDs, so * it is also necessary to know the specific type. * @param context current DSpace context. * @param legacyId the old integer record identifier. * @param clazz DSO subtype of record identified by {@link legacyId}. * @return * @throws SQLException */ public T findByLegacyId(Context context, int legacyId, Class<T> clazz) throws SQLException { CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context); CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, clazz); Root<T> root = criteriaQuery.from(clazz); criteriaQuery.where(criteriaBuilder.equal(root.get("legacyId"), legacyId)); return uniqueResult(context, criteriaQuery, false, clazz, -1, -1); }
@Override public void delete(Context context, Group group) throws SQLException { Query query = getHibernateSession(context) .createSQLQuery("DELETE FROM group2group WHERE parent_id=:groupId or child_id=:groupId"); query.setParameter("groupId", group.getID()); query.executeUpdate(); super.delete(context, group); }