Add test for broken fetching issue #462

This commit is contained in:
Pieter Bos
2016-02-11 17:00:39 +01:00
parent 59996da07a
commit 42b112c3d7
5 changed files with 174 additions and 0 deletions
@@ -0,0 +1,32 @@
package com.avaje.tests.model.survey;
import javax.persistence.*;
import java.util.*;
@Entity
public class Category {
@Id
public Long id;
@ManyToOne
@JoinColumn(name = "surveyObjectId")
private Survey survey;
@OneToMany(mappedBy = "category", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@OrderBy("sequenceNumber")
private List<Group> groups;
private int sequenceNumber;
public List<Group> getGroups() {
return groups;
}
public void setGroups(List<Group> groups) {
this.groups = groups;
}
public void setSequenceNumber(int number) {
this.sequenceNumber = number;
}
}
@@ -0,0 +1,33 @@
package com.avaje.tests.model.survey;
import javax.persistence.*;
import java.util.*;
@Entity
@Table(name="survey_group")
public class Group {
@Id
public Long id;
@ManyToOne
@JoinColumn(name = "categoryObjectId")
private Category category;
@OneToMany(mappedBy = "group", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@OrderBy("sequenceNumber")
private List<Question> questions = new ArrayList<Question>();
private int sequenceNumber;
public List<Question> getQuestions() {
return questions;
}
public void setQuestions(List<Question> questions) {
this.questions = questions;
}
public void setSequenceNumber(int number) {
this.sequenceNumber = number;
}
}
@@ -0,0 +1,20 @@
package com.avaje.tests.model.survey;
import javax.persistence.*;
@Entity
public class Question {
@Id
public Long id;
@ManyToOne
@JoinColumn(name = "groupObjectId")
private Group group;
private int sequenceNumber;
public void setSequenceNumber(int number) {
this.sequenceNumber = number;
}
}
@@ -0,0 +1,22 @@
package com.avaje.tests.model.survey;
import javax.persistence.*;
import java.util.*;
@Entity
public class Survey {
@Id
public Long id;
@OneToMany(mappedBy = "survey", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@OrderBy("sequenceNumber")
private List<Category> categories;
public List<Category> getCategories() {
return categories;
}
public void setCategories(List<Category> categories) {
this.categories = categories;
}
}
@@ -0,0 +1,67 @@
package com.avaje.tests.model.survey;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.OrderBy;
import com.avaje.ebean.Query;
import org.avaje.ebeantest.LoggedSqlCollector;
import org.junit.Assert;
import org.junit.Test;
import java.util.*;
import static org.junit.Assert.*;
public class TestOrderByFetch extends BaseTestCase {
@Test
public void test() {
Survey survey = new Survey();
List<Category> categories = new ArrayList<Category>();
Category category = new Category();
category.setSequenceNumber(1);
categories.add(category);
survey.setCategories(categories);
List<Group> groups = new ArrayList<Group>();
Group group1 = new Group();
group1.setSequenceNumber(1);
Group group2 = new Group();
group2.setSequenceNumber(2);
groups.add(group1);
groups.add(group2);
category.setGroups(groups);
List<Question> questionListGroup1 = new ArrayList<Question>();
Question q1 = new Question();
q1.setSequenceNumber(1);
Question q2 = new Question();
q2.setSequenceNumber(2);
questionListGroup1.add(q1);
questionListGroup1.add(q2);
group1.setQuestions(questionListGroup1);
List<Question> questionListGroup2 = new ArrayList<Question>();
Question q3 = new Question();
q3.setSequenceNumber(1);
Question q4 = new Question();
q4.setSequenceNumber(2);
questionListGroup2.add(q3);
questionListGroup2.add(q4);
group2.setQuestions(questionListGroup2);
Ebean.save(survey);
Survey foundSurvey = Ebean.find(Survey.class)
.fetch("categories")
.fetch("categories.groups")
.fetch("categories.groups.questions")
.findUnique();
assertEquals(1, foundSurvey.getCategories().size());
assertEquals(2, foundSurvey.getCategories().get(0).getGroups().size());
}
}