From: Vance K. <va...@us...> - 2006-04-26 15:10:53
|
User: vancek Date: 06/04/26 08:10:52 Modified: andromda-ejb3/src/main/resources/templates/ejb3 DaoBase.vsl Log: swap normal EJBQL query definitions defined at runtime for named queries defined during deployment in loadAll and finder methods. finder methods without a query paramter use named queries if defined. fix query object enumeration type, firstResult, maxResults. set cacheRegion query hint if caching enabled. Revision Changes Path 1.2 +100 -33 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/DaoBase.vsl Index: DaoBase.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/templates/ejb3/DaoBase.vsl,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- DaoBase.vsl 24 Apr 2006 02:21:43 -0000 1.1 +++ DaoBase.vsl 26 Apr 2006 15:10:51 -0000 1.2 @@ -27,7 +27,7 @@ * objects of type <code>$entity.fullyQualifiedEntityName</code>. * </p> * - * @see $entity.fullyQualifiedEntityName + * @see $entity.fullyQualifiedDaoName */ @javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRED) @javax.ejb.Local({${entity.fullyQualifiedDaoName}.class}) @@ -130,7 +130,11 @@ { try { +#if ($entity.genericFinders) + javax.persistence.Query query = emanager.createNamedQuery("${entity.name}.findAll"); +#else javax.persistence.Query query = emanager.createQuery("from ${entity.entityName} as entity"); +#end java.util.List<${entity.fullyQualifiedEntityName}> results = query.getResultList(); this.transformEntities(transform, results); return results; @@ -463,7 +467,66 @@ throws ${entity.fullyQualifiedDaoDefaultExceptionName} #**##end { +#**##if ($finder.namedQuery) + try + { + javax.persistence.Query queryObject = emanager.createNamedQuery("${entity.name}.${finder.name}"); +#* *##foreach($argument in $finder.arguments) +#* *##set ($count = $velocityCount - 1) +#* *##set ($argumentValue = $argument.name) +#* *##if ($argument.firstResult) + queryObject.setFirstResult(${argument.name}); +#* *##elseif ($argument.maxResults) + queryObject.setMaxResults(${argument.name}); +#* *##else +#* *##if($argument.type.primitive) +#* *##set ($argumentValue = "new ${argument.type.wrapperName}($argument.name)") +#* *##else +#* *##set ($argumentValue = "${argument.name}") +#* *##if ($argument.enumerationTypeOrdinal) +#* *##set ($argumentValue = "${argumentValue}.ordinal()") +#* *##elseif ($argument.enumerationTypeString) +#* *##set ($argumentValue = "${argumentValue}.name()") +#* *##end +#* *##end +#* *##if ($argument.temporalType) +#* *##set ($argumentValue = "${argumentValue}, javax.persistence.TemporalType.${argument.temporalType}") +#* *##end +#* *##set ($setParameterOperation = "setParameter") +#* *##if ($argument.type.collectionType || $argument.type.arrayType) +#* *##set ($setParameterOperation = "${setParameterOperation}List") +#* *##end +#* *##if ($finder.useNamedParameters) + queryObject.${setParameterOperation}("$argument.name", $argumentValue); +#* *##else + queryObject.${setParameterOperation}($count, $argumentValue); +#* *##end +#* *##end +#* *##end +#* *##if ($finder.useQueryCache && !$entity.useDefaultCacheRegion) + queryObject.setHint("org.hibernate.cacheRegion", "/${entity.fullyQualifiedNamePath}_${finder.name}"); +#* *##end +#* *##if ($finder.returnType.setType) + java.util.Set results = new java.util.LinkedHashSet(queryObject.getResultList()); + transformEntities(transform, results); + return results; +#* *##elseif ($finder.returnType.collectionType) + java.util.List results = queryObject.getResultList(); + transformEntities(transform, results); + return results; +#* *##else + $finder.returnType.fullyQualifiedName result = ($finder.returnType.fullyQualifiedName)queryObject.getSingleResult(); + result = transformEntity(transform, ($entity.fullyQualifiedName)result); + return result; +#* *##end + } + catch (Exception ex) + { + throw new ${entity.fullyQualifiedDaoDefaultExceptionName}(ex); + } +#**##else return this.${finder.name}(transform, "$finder.getQuery($entity)"#if(!$finder.arguments.empty), ${finder.argumentNames}#end); +#**##end } /** @@ -482,10 +545,23 @@ #**##foreach($argument in $finder.arguments) #* *##set ($count = $velocityCount - 1) #* *##set ($argumentValue = $argument.name) +#* *##if ($argument.firstResult) + queryObject.setFirstResult(${argument.name}); +#* *##elseif ($argument.maxResults) + queryObject.setMaxResults(${argument.name}); +#* *##else #* *##if($argument.type.primitive) #* *##set ($argumentValue = "new ${argument.type.wrapperName}($argument.name)") -#* *##elseif ($argument.type.enumeration) -#* *##set ($argumentValue = "${argument.name}.getValue()") +#* *##else +#* *##set ($argumentValue = "${argument.name}") +#* *##if ($argument.enumerationTypeOrdinal) +#* *##set ($argumentValue = "${argumentValue}.ordinal()") +#* *##elseif ($argument.enumerationTypeString) +#* *##set ($argumentValue = "${argumentValue}.name()") +#* *##end +#* *##end +#* *##if ($argument.temporalType) +#* *##set ($argumentValue = "${argumentValue}, javax.persistence.TemporalType.${argument.temporalType}") #* *##end #* *##set ($setParameterOperation = "setParameter") #* *##if ($argument.type.collectionType || $argument.type.arrayType) @@ -497,31 +573,22 @@ queryObject.${setParameterOperation}($count, $argumentValue); #* *##end #**##end -#**##if ($finder.returnType.setType || !$finder.returnType.collectionType) +#**##end +#**##if ($finder.useQueryCache && !$entity.useDefaultCacheRegion) + queryObject.setHint("org.hibernate.cacheRegion", "/${entity.fullyQualifiedNamePath}_${finder.name}"); +#**##end +#**##if ($finder.returnType.setType) java.util.Set results = new java.util.LinkedHashSet(queryObject.getResultList()); -#**##else + transformEntities(transform, results); + return results; +#**##elseif ($finder.returnType.collectionType) java.util.List results = queryObject.getResultList(); -#**##end -#**##if (!$finder.returnType.collectionType) - Object result = null; - if (results != null) - { - if (results.size() > 1) - { - throw new ${entity.fullyQualifiedDaoDefaultExceptionName}( - "More than one instance of '${finder.returnType.fullyQualifiedName}" - + "' was found when executing query --> '" + queryString + "'"); - } - else if (results.size() == 1) - { - result = ($entity.fullyQualifiedName)results.iterator().next(); - } - } - result = transformEntity(transform, ($entity.fullyQualifiedName)result); - return result; -#**##else transformEntities(transform, results); return results; +#**##else + $finder.returnType.fullyQualifiedName result = ($finder.returnType.fullyQualifiedName)queryObject.getSingleResult(); + result = transformEntity(transform, ($entity.fullyQualifiedName)result); + return result; #**##end } catch (Exception ex) |