====== Usar Expresiones EL como Valores de Parámetros en las Consultas ======
\\
Solo hay una **restricción**, en las aplicaciones **FundeWeb 1.5 que despliegan en Weblogic 12.1** no se puede utilizar ya que provoca errores de casting de clases.
Para las aplicaciones FundeWeb 1.5 que despliegan en Weblogic 12.2, no hay problema ya que en la [[https://wiki.um.es/wikis/programador/doku.php?id=migraciones:fdw1_wls_121_to_wls_122#codigo_java|Wiki de Migracion]] se trata la modificación necesaria para que funcione correctamente.
\\
Ahora podemos establecer como valores de parámetros en las consultas expresiones EL de tipo //ValueExpression//, es decir, nosotros obtenemos nuestra //Query// del //Entity Manager// y establecemos los parámetros con el método //setParameter(String name, Object value)// o //setParameter(int position, Object value)//.
Ejemplo de un metodo añadido en el DAS:
\\
public Foo getFooELParameter() {
Query query = getEntityManager().createQuery( "select entity from Foo entity where entity.propertyOne = :parameterOne" );
query.setParameter( "parameterOne", "#{miBean.miProperty}" );
return query.getSingleResult();
}
\\
También podemos establecer el valor de un //hint// mediante expresiones EL en el método //setHint(int position, Object value)//, ejemplo:
\\
public Foo getFooELParameterAndHint() {
Query query = getEntityManager().createQuery( "select entity from Foo entity where entity.propertyOne = :parameterOne" );
query.setParameter( "parameterOne", "#{miBean.miProperty}" );
query.setHint("javax.persistence.query.timeout", "#{jpaBackbean.queryTimeout}" );
return query.getSingleResult();
}
\\
En los métodos internos de la clase //DataAccessServiceImpl// que aceptan //parameters// o //hints//, también funciona, ejemplo:
\\
public List getFoosELParameterAndHint2() {
List restrictions = new ArrayList();
restrictions.add( "entity.propertyOne = :parameterOne" )
Map parameters = new HashMap();
parameters.put( "parameterOne", "#{miBean.miProperty}" );
Map hints = new HashMap();
hints.put( "javax.persistence.query.timeout", "#{jpaBackbean.queryTimeout}" );
return findByEntityQueryWithDinamicFilter( restrictions, parameters, 0, 25, null, null, hints );
}
\\
Además, se pueden utilizar expresiones EL en el método //setProperty(String propertyName, Object value)// del //Entity Manager//.
----
--- //[[juanmiguel.bernal@ticarum.es|JUAN MIGUEL BERNAL GONZALEZ]] 11/03/2020 17:32//