/**
  * The select clause defines what columns are selected for.<br>
  * <br>
  * note: the underlying query executer may decide to select more columns than specified, if
  * required.<br>
  * Examples would be primary keys and optimistic lock values.
  *
  * @param properties
  * @return
  */
 public QueryObject<R> select(QProperty<?>... properties) {
   /** Configure each query object according to the properties. */
   for (QProperty<?> property : properties) {
     property.getQueryObject().projectedProperties.clear();
   }
   for (QProperty<?> property : properties) {
     property.getQueryObject().projectedProperties.add(property.getName());
   }
   return this;
 }
 /**
  * A way of adding projection properties to query piece by piece
  *
  * @param properties
  * @return
  */
 public QueryObject<R> andSelect(QProperty<?>... properties) {
   for (QProperty<?> property : properties) {
     property.getQueryObject().projectedProperties.add(property.getName());
   }
   return this;
 }