Predefinindo e agrupando um conjunto de colunas para uma consulta

É possível selecionar e agrupar colunas para serem usadas em uma procura de consulta (selecionar/listar) incluindo um parâmetro QueryGroup na definição da entidade.

Cada QueryGroup contém as colunas a serem usadas para uma consulta. Cada QueryGroup é identificado por um nome exclusivo sob o qual as colunas devem ser especificadas.

Uma mapa global QueryGroupMap é fornecido na classe de Entidade, que contém um nome de grupo de consultas exclusivo e atributos correspondentes para as colunas do grupo de consultas. Esse mapa é preenchido quando o repositório da entidade é carregado.

Nota: O nome QueryGroup não deve estar em branco. Ao incluir um nome de grupo de consultas no mapa, verifique se o nome existe no mapa..

Cada entidade pode ter diversos grupos de consultas como esse, que são definidos sob um parâmetro QueryGroups:

<Entity> 
  <QueryGroups> 
    <QueryGroup Name="PasswordQueryGroup">
       <Column Name="PASSWORD"/>
       <Column Name="IS_PASSWORD_ENCRYPTED"/> 
       <Column Name="SALT"/>
     </QueryGroup> 
     <QueryGroup Name="BusinessQueryGroup"> 
       <Column Name="BUSINESS_KEY"/> 
       <Column Name="CONTACTADDRESS_KEY"/> 
       <ColumnName="BILLINGADDRESS_KEY"/> 
      </QueryGroup> 
   </QueryGroups> 
</Entity>

Qualquer número de consultas pode ser especificado sob o grupo de consultas. Porém, as colunas não devem ser repetidas para um grupo de consultas.

Nota: uma coluna em um QueryGroup pode fazer parte de outros QueryGroups. Um grupo de consultas deve conter pelo menos uma coluna válida e colunas definidas para um grupo de consultas devem existir na entidade. Não é possível incluir colunas virtuais no grupo de consultas.
Para obter uma lista de todas as colunas que fazem parte de um QueryGroup particular, use o método getColumnSetForQueryGroup no seguinte formato:
public Set getColumnSetForQueryGroup(String queryGroupName)
Os seguintes métodos também podem ser usados juntamente com parâmetros específicos para se obter uma lista de colunas em um grupo de consultas:
  • selectWithWhereForQueryGroup
  • listWithWhereForQueryGroup
Por exemplo,
public YFS_User selectWithWhereForQueryGroup(YFCDBContext ctx, 
String aWhereClause, String queryGroupName) throws YFCDBException{ 
Set columns = getColumnSet(queryGroupName); 
return selectWithWhere(ctx, aWhereClause, columns); 
}