Package com.avaje.tests.query.joins

Source Code of com.avaje.tests.query.joins.TestDisjunctWhereOuterOnMany

package com.avaje.tests.query.joins;

import java.util.List;

import org.junit.Assert;
import org.junit.Test;

import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.Query;
import com.avaje.tests.model.basic.UUOne;
import com.avaje.tests.model.basic.UUTwo;

public class TestDisjunctWhereOuterOnMany extends BaseTestCase {

  @Test
  public void test() {
   
    // setup
    UUOne master1 = new UUOne();
    master1.setName("testDisjOuter_1_name");

    UUTwo detail1 = new UUTwo();
    detail1.setMaster(master1);
    detail1.setName("testDisjOuter_CHILD_1");

    UUOne master2 = new UUOne();
    master2.setName("testDisjOuter_2_name");

    Ebean.save(master1);
    Ebean.save(detail1);
    Ebean.save(master2);
   
   
    // Have outer join so that "testDisjOuter_2_name" is found
    Query<UUOne> query = Ebean.find(UUOne.class)
      .where().disjunction()
        .eq("name", "testDisjOuter_2_name")
        .eq("comments.name", "testDisjOuter_CHILD_1")
        .endJunction()
        .query();
   
    List<UUOne> list = query.findList();
    int rowCount = query.findRowCount();
   
    // select distinct t0.id c0, t0.name c1
    // from uuone t0
    // join uutwo u1 on u1.master_id = t0.id 
    // left outer join uutwo t1 on t1.master_id = t0.id
    // where (t0.name = ?  or u1.name = ? ) ;
    // --bind(testDisjOuter_2_name,testDisjOuter_CHILD_1)
   
    Assert.assertEquals(2, list.size());
    Assert.assertEquals(2, rowCount);
   
    String expectedSql = "select distinct t0.id c0, t0.name c1 from uuone t0 left outer join uutwo u1 on u1.master_id = t0.id  where (t0.name = ?  or u1.name = ? ) ";
    Assert.assertEquals(expectedSql, query.getGeneratedSql());
   
  }
 
}
TOP

Related Classes of com.avaje.tests.query.joins.TestDisjunctWhereOuterOnMany

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.