mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package org.tests.query.embedded;
|
||||
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.ExpressionList;
|
||||
import org.hamcrest.core.Is;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.embedded.EEmbDatePeriod;
|
||||
import org.tests.model.embedded.EEmbInner;
|
||||
import org.tests.model.embedded.EEmbOuter;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Test that selecting A and filtering on 'B.C=some_value' will correctly create join on table for B.
|
||||
* Model:
|
||||
* - Bean A has relation to bean B
|
||||
* - Bean B has an embedded property C
|
||||
*/
|
||||
public class TestFilteringByEmbeddedInJoinedTable extends BaseTestCase {
|
||||
|
||||
private EEmbOuter createOuter(String nomeOuter, Date date1, Date date2) {
|
||||
EEmbOuter outer1 = new EEmbOuter();
|
||||
outer1.setNomeOuter(nomeOuter);
|
||||
|
||||
EEmbDatePeriod eEmbDatePeriod = new EEmbDatePeriod();
|
||||
eEmbDatePeriod.setDate1(date1);
|
||||
eEmbDatePeriod.setDate2(date2);
|
||||
outer1.setDatePeriod(eEmbDatePeriod);
|
||||
|
||||
Ebean.save(outer1);
|
||||
return outer1;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOuterTableJoined() {
|
||||
|
||||
EEmbOuter outer1 = createOuter("outer1", new Date(11111), new Date(12222));
|
||||
// Unused outer2 just to populate the DB
|
||||
EEmbOuter outer2 = createOuter("outer2", new Date(21111), new Date(22222));
|
||||
EEmbOuter outer3 = createOuter("outer3", new Date(31111), new Date(32222));
|
||||
|
||||
|
||||
EEmbInner inner1 = new EEmbInner();
|
||||
inner1.setOuter(outer1);
|
||||
inner1.setNomeInner("inner1-1");
|
||||
Ebean.save(inner1);
|
||||
|
||||
EEmbInner inner2 = new EEmbInner();
|
||||
// Setting outer1 also here
|
||||
inner2.setOuter(outer1);
|
||||
inner2.setNomeInner("inner2-1");
|
||||
Ebean.save(inner2);
|
||||
|
||||
EEmbInner inner3 = new EEmbInner();
|
||||
inner3.setOuter(outer3);
|
||||
inner3.setNomeInner("inner3-3");
|
||||
Ebean.save(inner3);
|
||||
|
||||
ExpressionList<EEmbInner> el = Ebean.find(EEmbInner.class).where()
|
||||
.eq("outer.datePeriod.date1", new Date(11111));
|
||||
List<EEmbInner> list = el.findList();
|
||||
|
||||
Assert.assertThat(list.size(), Is.is(2));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user