public int doDelete(String queryBase, QueryWhere queryData, Class<?> resultType, String subQuery) {
Map<String, Object> queryParams = new HashMap<String, Object>();
String queryString = createDeleteQuery(queryBase, queryData, queryParams, true, subQuery);
logger.debug("DELETE statement:\n {}", queryString);
if( logger.isDebugEnabled() ) {
StringBuilder paramsStr = new StringBuilder("PARAMS:");
Map<String, Object> orderedParams = new TreeMap<String, Object>(queryParams);
for( Entry<String, Object> entry : orderedParams.entrySet() ) {
paramsStr.append("\n " + entry.getKey() + " : '" + entry.getValue() + "'");
}
logger.debug(paramsStr.toString());
}
EntityManager em = getEntityManager();
Object newTx = joinTransaction(em);
Query query = em.createQuery(queryString);
int result = executeWithParameters(queryParams, query);
logger.debug("Deleted rows " + result);
closeEntityManager(em, newTx);
return result;
}