mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
Merge pull request #560 from nedap/master
Add test for broken fetching issue #462
This commit is contained in:
@@ -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());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user