01 February 2013

Cláusula IN en ADF BC ViewObjects

La clausula IN de las sentencias Select no esta soportada por los asistentes de jdeveloper, a día de hoy la forma de hacer una cláusula IN es mediante código.

El siguiente snippet crea un ViewCriteria de un VO que genera la sentencia IN.

ViewCriteria vc1 = view.createViewCriteria();
vc1.setName("usuarioSearchCriteria");
...
ViewCriteriaRow inRolCondition = vc1.createViewCriteriaRow();
inRolCondition.setAttribute("rol", " IN (" + roles + ")");
inRolCondition.setConjunction(ViewCriteriaRow.VC_CONJ_AND);
...
vc1.add(inRolCondition);
view.applyViewCriteria(vc1);

En este caso la variable roles es un string, cuyos valores estan separados por comas (Por ejemplo: "rol1,rol2,rol3"), el framework se encarda de detectar el tipo de datos y generar la sentencia select correctamente.

Tambien se puede hacer algo similar sobre-escribiendo el método getCriteriaItemClause de los VO.

Enlaces relacionados: 
- FIN -

No comments: