mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#462 - No effective change, reformat code ... When fetching, collections can get populated with too many entities -
This commit is contained in:
@@ -1,32 +1,38 @@
|
||||
package com.avaje.tests.model.survey;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.*;
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OrderBy;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
public class Category {
|
||||
@Id
|
||||
public Long id;
|
||||
@Id
|
||||
public Long id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "surveyObjectId")
|
||||
private Survey survey;
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "surveyObjectId")
|
||||
private Survey survey;
|
||||
|
||||
@OneToMany(mappedBy = "category", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@OrderBy("sequenceNumber")
|
||||
private List<Group> groups;
|
||||
@OneToMany(mappedBy = "category", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@OrderBy("sequenceNumber")
|
||||
private List<Group> groups;
|
||||
|
||||
private int sequenceNumber;
|
||||
private int sequenceNumber;
|
||||
|
||||
public List<Group> getGroups() {
|
||||
return groups;
|
||||
}
|
||||
public List<Group> getGroups() {
|
||||
return groups;
|
||||
}
|
||||
|
||||
public void setGroups(List<Group> groups) {
|
||||
this.groups = groups;
|
||||
}
|
||||
public void setGroups(List<Group> groups) {
|
||||
this.groups = groups;
|
||||
}
|
||||
|
||||
public void setSequenceNumber(int number) {
|
||||
this.sequenceNumber = number;
|
||||
}
|
||||
public void setSequenceNumber(int number) {
|
||||
this.sequenceNumber = number;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +1,41 @@
|
||||
package com.avaje.tests.model.survey;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.*;
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OrderBy;
|
||||
import javax.persistence.Table;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name="survey_group")
|
||||
@Table(name = "survey_group")
|
||||
public class Group {
|
||||
@Id
|
||||
public Long id;
|
||||
@Id
|
||||
public Long id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "categoryObjectId")
|
||||
private Category category;
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "categoryObjectId")
|
||||
private Category category;
|
||||
|
||||
@OneToMany(mappedBy = "group", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@OrderBy("sequenceNumber")
|
||||
private List<Question> questions = new ArrayList<Question>();
|
||||
@OneToMany(mappedBy = "group", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@OrderBy("sequenceNumber")
|
||||
private List<Question> questions = new ArrayList<Question>();
|
||||
|
||||
private int sequenceNumber;
|
||||
private int sequenceNumber;
|
||||
|
||||
public List<Question> getQuestions() {
|
||||
return questions;
|
||||
}
|
||||
public List<Question> getQuestions() {
|
||||
return questions;
|
||||
}
|
||||
|
||||
public void setQuestions(List<Question> questions) {
|
||||
this.questions = questions;
|
||||
}
|
||||
public void setQuestions(List<Question> questions) {
|
||||
this.questions = questions;
|
||||
}
|
||||
|
||||
public void setSequenceNumber(int number) {
|
||||
this.sequenceNumber = number;
|
||||
}
|
||||
public void setSequenceNumber(int number) {
|
||||
this.sequenceNumber = number;
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,23 @@
|
||||
package com.avaje.tests.model.survey;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
|
||||
@Entity
|
||||
public class Question {
|
||||
@Id
|
||||
public Long id;
|
||||
@Id
|
||||
public Long id;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "groupObjectId")
|
||||
private Group group;
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "groupObjectId")
|
||||
private Group group;
|
||||
|
||||
private int sequenceNumber;
|
||||
private int sequenceNumber;
|
||||
|
||||
public void setSequenceNumber(int number) {
|
||||
this.sequenceNumber = number;
|
||||
}
|
||||
public void setSequenceNumber(int number) {
|
||||
this.sequenceNumber = number;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,22 +1,26 @@
|
||||
package com.avaje.tests.model.survey;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.*;
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OrderBy;
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
public class Survey {
|
||||
@Id
|
||||
public Long id;
|
||||
@Id
|
||||
public Long id;
|
||||
|
||||
@OneToMany(mappedBy = "survey", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@OrderBy("sequenceNumber")
|
||||
private List<Category> categories;
|
||||
@OneToMany(mappedBy = "survey", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
@OrderBy("sequenceNumber")
|
||||
private List<Category> categories;
|
||||
|
||||
public List<Category> getCategories() {
|
||||
return categories;
|
||||
}
|
||||
public List<Category> getCategories() {
|
||||
return categories;
|
||||
}
|
||||
|
||||
public void setCategories(List<Category> categories) {
|
||||
this.categories = categories;
|
||||
}
|
||||
public void setCategories(List<Category> categories) {
|
||||
this.categories = categories;
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,13 @@ 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.jetbrains.annotations.NotNull;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class TestOrderByFetch extends BaseTestCase {
|
||||
|
||||
@@ -24,44 +21,52 @@ public class TestOrderByFetch extends BaseTestCase {
|
||||
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);
|
||||
List<Group> groups = new ArrayList<Group>();
|
||||
Group group1 = group(1);
|
||||
Group group2 = group(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);
|
||||
questionListGroup1.add(question(1));
|
||||
questionListGroup1.add(question(2));
|
||||
questionListGroup1.add(question(3));
|
||||
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);
|
||||
questionListGroup2.add(question(1));
|
||||
questionListGroup2.add(question(2));
|
||||
group2.setQuestions(questionListGroup2);
|
||||
|
||||
Ebean.save(survey);
|
||||
|
||||
Survey foundSurvey = Ebean.find(Survey.class)
|
||||
.fetch("categories")
|
||||
.fetch("categories.groups")
|
||||
.fetch("categories.groups.questions")
|
||||
.findUnique();
|
||||
.setDisableLazyLoading(true)
|
||||
.fetch("categories")
|
||||
.fetch("categories.groups")
|
||||
.fetch("categories.groups.questions")
|
||||
.findUnique();
|
||||
|
||||
assertEquals(1, foundSurvey.getCategories().size());
|
||||
assertEquals(2, foundSurvey.getCategories().get(0).getGroups().size());
|
||||
|
||||
|
||||
Category category1 = foundSurvey.getCategories().get(0);
|
||||
List<Group> groups2 = category1.getGroups();
|
||||
assertEquals(2, groups2.size());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Group group(int number) {
|
||||
Group group1 = new Group();
|
||||
group1.setSequenceNumber(number);
|
||||
return group1;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Question question(int sequence) {
|
||||
Question q2 = new Question();
|
||||
q2.setSequenceNumber(sequence);
|
||||
return q2;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user