List of usage examples for org.springframework.dao InvalidDataAccessResourceUsageException InvalidDataAccessResourceUsageException
public InvalidDataAccessResourceUsageException(String msg)
From source file:org.grails.datastore.mapping.mongo.query.MongoQuery.java
@SuppressWarnings("unchecked") public static void populateMongoQuery(PersistentEntity entity, DBObject query, Junction criteria) { List disjunction = null;/*from w w w . jav a 2 s.c o m*/ if (criteria instanceof Disjunction) { disjunction = new ArrayList(); query.put(MONGO_OR_OPERATOR, disjunction); } for (Criterion criterion : criteria.getCriteria()) { final QueryHandler queryHandler = queryHandlers.get(criterion.getClass()); if (queryHandler != null) { DBObject dbo = query; if (disjunction != null) { dbo = new BasicDBObject(); disjunction.add(dbo); } if (criterion instanceof PropertyCriterion) { PropertyCriterion pc = (PropertyCriterion) criterion; PersistentProperty property = entity.getPropertyByName(pc.getProperty()); if (property instanceof Custom) { CustomTypeMarshaller customTypeMarshaller = ((Custom) property).getCustomTypeMarshaller(); customTypeMarshaller.query(property, pc, query); continue; } } queryHandler.handle(entity, criterion, dbo); } else { throw new InvalidDataAccessResourceUsageException("Queries of type " + criterion.getClass().getSimpleName() + " are not supported by this implementation"); } } }
From source file:org.grails.datastore.mapping.query.jpa.JpaQueryBuilder.java
private void buildUpdateStatement(StringBuilder queryString, Map<String, Object> propertiesToUpdate, List parameters, boolean hibernateCompatible) { queryString.append(SPACE).append("SET"); // keys need to be sorted before query is built Set<String> keys = new TreeSet<String>(propertiesToUpdate.keySet()); Iterator<String> iterator = keys.iterator(); while (iterator.hasNext()) { String propertyName = iterator.next(); PersistentProperty prop = entity.getPropertyByName(propertyName); if (prop == null) throw new InvalidDataAccessResourceUsageException("Property '" + propertyName + "' of class '" + entity.getName() + "' specified in update does not exist"); parameters.add(propertiesToUpdate.get(propertyName)); queryString.append(SPACE).append(logicalName).append(DOT).append(propertyName).append('=') .append(QUESTIONMARK);// w w w.jav a 2 s. c o m if (!hibernateCompatible) queryString.append(parameters.size()); if (iterator.hasNext()) { queryString.append(COMMA); } } }
From source file:org.grails.datastore.mapping.query.jpa.JpaQueryBuilder.java
private static PersistentProperty validateProperty(PersistentEntity entity, String name, Class criterionType) { if (entity.getIdentity().getName().equals(name)) return entity.getIdentity(); PersistentProperty prop = entity.getPropertyByName(name); if (prop == null) { throw new InvalidDataAccessResourceUsageException("Cannot use [" + criterionType.getSimpleName() + "] criterion on non-existent property: " + name); }//from w ww . j a v a 2 s. c o m return prop; }
From source file:org.grails.datastore.mapping.query.jpa.JpaQueryBuilder.java
static int buildWhereClauseForCriterion(PersistentEntity entity, Query.Junction criteria, StringBuilder q, StringBuilder whereClause, String logicalName, final List<Query.Criterion> criterionList, int position, List parameters, ConversionService conversionService, boolean allowJoins, boolean hibernateCompatible) { for (Iterator<Query.Criterion> iterator = criterionList.iterator(); iterator.hasNext();) { Query.Criterion criterion = iterator.next(); final String operator = criteria instanceof Query.Conjunction ? LOGICAL_AND : LOGICAL_OR; QueryHandler qh = queryHandlers.get(criterion.getClass()); if (qh != null) { position = qh.handle(entity, criterion, q, whereClause, logicalName, position, parameters, conversionService, allowJoins, hibernateCompatible); } else if (criterion instanceof AssociationCriteria) { if (!allowJoins) { throw new InvalidDataAccessResourceUsageException( "Joins cannot be used in a DELETE or UPDATE operation"); }/* w ww. ja va 2 s. co m*/ AssociationCriteria ac = (AssociationCriteria) criterion; Association association = ac.getAssociation(); List<Query.Criterion> associationCriteriaList = ac.getCriteria(); handleAssociationCriteria(q, whereClause, logicalName, position, parameters, conversionService, allowJoins, association, new Query.Conjunction(), associationCriteriaList, hibernateCompatible); } else { throw new InvalidDataAccessResourceUsageException("Queries of type " + criterion.getClass().getSimpleName() + " are not supported by this implementation"); } if (iterator.hasNext()) { whereClause.append(operator); } } return position; }
From source file:org.andromda.timetracker.domain.UserDaoBase.java
/** * {@inheritDoc}//from w w w . j a v a2 s . co m */ @Override public Object findByEmail(final int transform, final String queryString, final String email) { try { Query queryObject = super.getSession(false).createQuery(queryString); queryObject.setParameter("email", email); Set results = new LinkedHashSet(queryObject.list()); Object result = null; if (results.size() > 1) { throw new InvalidDataAccessResourceUsageException( "More than one instance of 'org.andromda.timetracker.domain.User" + "' was found when executing query --> '" + queryString + "'"); } else if (results.size() == 1) { result = results.iterator().next(); } if (transform != TRANSFORM_NONE) { result = transformEntity(transform, (User) result); } return result; } catch (HibernateException ex) { throw super.convertHibernateAccessException(ex); } }
From source file:org.springframework.batch.item.database.AbstractCursorItemReader.java
/** * Check the result set is in synch with the currentRow attribute. This is * important to ensure that the user hasn't modified the current row. *//*from w w w . j a v a2s. c o m*/ private void verifyCursorPosition(long expectedCurrentRow) throws SQLException { if (verifyCursorPosition) { if (expectedCurrentRow != this.rs.getRow()) { throw new InvalidDataAccessResourceUsageException("Unexpected cursor position change."); } } }
From source file:org.springframework.batch.item.database.IbatisBatchItemWriter.java
@Override public void write(final List<? extends T> items) { if (!items.isEmpty()) { if (logger.isDebugEnabled()) { logger.debug("Executing batch with " + items.size() + " items."); }//from ww w .ja v a 2 s . c o m List<BatchResult> results = execute(items); if (assertUpdates) { if (results.size() != 1) { throw new InvalidDataAccessResourceUsageException("Batch execution returned invalid results. " + "Expected 1 but number of BatchResult objects returned was " + results.size()); } int[] updateCounts = results.get(0).getUpdateCounts(); for (int i = 0; i < updateCounts.length; i++) { int value = updateCounts[i]; if (value == 0) { throw new EmptyResultDataAccessException("Item " + i + " of " + updateCounts.length + " did not update any rows: [" + items.get(i) + "]", 1); } } } } }
From source file:org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.java
@Override public RedisSentinelConnection getSentinelConnection() { if (!(client instanceof RedisClient)) { throw new InvalidDataAccessResourceUsageException( "Unable to connect to sentinels using " + client.getClass()); }/*from w w w . j a v a 2 s . com*/ return new LettuceSentinelConnection(((RedisClient) client).connectSentinelAsync()); }
From source file:org.springframework.jdbc.core.simple.AbstractJdbcInsert.java
/** * Delegate method to execute the insert, generating any number of keys. *///from w w w. j a va 2s . c o m private KeyHolder executeInsertAndReturnKeyHolderInternal(final List<?> values) { if (logger.isDebugEnabled()) { logger.debug("The following parameters are used for call " + getInsertString() + " with: " + values); } final KeyHolder keyHolder = new GeneratedKeyHolder(); if (this.tableMetaDataContext.isGetGeneratedKeysSupported()) { getJdbcTemplate().update(con -> { PreparedStatement ps = prepareStatementForGeneratedKeys(con); setParameterValues(ps, values, getInsertTypes()); return ps; }, keyHolder); } else { if (!this.tableMetaDataContext.isGetGeneratedKeysSimulated()) { throw new InvalidDataAccessResourceUsageException( "The getGeneratedKeys feature is not supported by this database"); } if (getGeneratedKeyNames().length < 1) { throw new InvalidDataAccessApiUsageException("Generated Key Name(s) not specified. " + "Using the generated keys features requires specifying the name(s) of the generated column(s)"); } if (getGeneratedKeyNames().length > 1) { throw new InvalidDataAccessApiUsageException( "Current database only supports retrieving the key for a single column. There are " + getGeneratedKeyNames().length + " columns specified: " + Arrays.asList(getGeneratedKeyNames())); } Assert.state(getTableName() != null, "No table name set"); final String keyQuery = this.tableMetaDataContext.getSimulationQueryForGetGeneratedKey(getTableName(), getGeneratedKeyNames()[0]); Assert.state(keyQuery != null, "Query for simulating get generated keys can't be null"); // This is a hack to be able to get the generated key from a database that doesn't support // get generated keys feature. HSQL is one, PostgreSQL is another. Postgres uses a RETURNING // clause while HSQL uses a second query that has to be executed with the same connection. if (keyQuery.toUpperCase().startsWith("RETURNING")) { Long key = getJdbcTemplate().queryForObject(getInsertString() + " " + keyQuery, values.toArray(new Object[values.size()]), Long.class); Map<String, Object> keys = new HashMap<>(1); keys.put(getGeneratedKeyNames()[0], key); keyHolder.getKeyList().add(keys); } else { getJdbcTemplate().execute((ConnectionCallback<Object>) con -> { // Do the insert PreparedStatement ps = null; try { ps = con.prepareStatement(getInsertString()); setParameterValues(ps, values, getInsertTypes()); ps.executeUpdate(); } finally { JdbcUtils.closeStatement(ps); } //Get the key Statement keyStmt = null; ResultSet rs = null; Map<String, Object> keys = new HashMap<>(1); try { keyStmt = con.createStatement(); rs = keyStmt.executeQuery(keyQuery); if (rs.next()) { long key = rs.getLong(1); keys.put(getGeneratedKeyNames()[0], key); keyHolder.getKeyList().add(keys); } } finally { JdbcUtils.closeResultSet(rs); JdbcUtils.closeStatement(keyStmt); } return null; }); } } return keyHolder; }