====== 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//