/**
   * 针对一个带有级联关系的对象,实现指定选择列的查询
   *
   * @throws SQLException
   */
  @Test
  public void testAssignSelectColumn() throws SQLException {
    db.createTable(Person.class);
    Transaction db = this.db.startTransaction();
    Person p = RandomData.newInstance(Person.class);
    p.setGender("F");
    p.setAge(19);
    db.insert(p);
    System.out.println("===========testAssignSelectColumn begin==============");
    {
      Query<Person> t1 = QB.create(Person.class);
      // 只选择指定的列
      t1.setCascadeViaOuterJoin(false);
      Selects select = QB.selectFrom(t1);
      // select.clearSelectItems();
      select.guessColumn("schoolId");
      // select.column(School.Field.name);

      select.guessColumn("schoolName");
      select.columns(t1, "name,age,cell");
      select.column(t1, "id");
      List<Person> result = db.select(t1);
      LogUtil.show(result.get(0));
    }
    {
      Query<Person> t1 = QB.create(Person.class);
      // 只选择指定的列
      // t1.setAutoOuterJoin(false);
      Selects select = QB.selectFrom(t1);
      // select.clearSelectItems();
      select.guessColumn("schoolId");
      // select.column(School.Field.name);

      select.guessColumn("schoolName");
      select.columns(t1, "name,age,cell");
      select.column(t1, "id");
      List<Person> result = db.select(t1);
      LogUtil.show(result.get(0));
    }
    {
      Query<Person> t1 = QB.create(Person.class);
      // 只选择指定的列
      // t1.setAutoOuterJoin(false);
      Selects select = QB.selectFrom(t1);
      // select.clearSelectItems();
      select.guessColumn("schoolId");
      // select.column(School.Field.name);

      select.guessColumn("schoolName");
      select.columns(t1, "name,age,cell");
      select.column(t1, "id");
      t1.setCascade(false);
      List<Person> result = db.select(t1.getInstance());
      LogUtil.show(result.get(0));
    }

    db.rollback(true);
    System.out.println("===========result==============");
  }
  /**
   * 测试分组
   *
   * @throws SQLException
   */
  @Test
  public void testGroup() throws SQLException {
    Transaction db = this.db.startTransaction();
    Person p = RandomData.newInstance(Person.class);
    p.setGender("F");
    p.setAge(19);
    db.insert(p);
    Query<Person> t1 = QB.create(Person.class);

    Selects select = QB.selectFrom(t1);
    select.column(Person.Field.gender).group();
    select.column(Person.Field.id).count().as("count");
    select.column(Person.Field.age).min().as("minAge");
    select.column(Person.Field.age).max().as("maxAge").having(Operator.GREAT, 0);
    List<Map> map = db.selectAs(t1, Map.class);
    db.rollback(true);
    LogUtil.show(map);
  }