diff --git a/src/test/java/com/avaje/tests/model/history/HeDoc.java b/src/test/java/com/avaje/tests/model/history/HeDoc.java new file mode 100644 index 000000000..0b6b5cd68 --- /dev/null +++ b/src/test/java/com/avaje/tests/model/history/HeDoc.java @@ -0,0 +1,37 @@ +package com.avaje.tests.model.history; + +import com.avaje.tests.model.draftable.BaseDomain; + +import javax.persistence.Entity; +import javax.persistence.ManyToMany; +import java.util.List; + + +@Entity +public class HeDoc extends BaseDomain { + + String name; + + @ManyToMany(mappedBy = "docs") + List links; + + public HeDoc(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getLinks() { + return links; + } + + public void setLinks(List links) { + this.links = links; + } +} diff --git a/src/test/java/com/avaje/tests/model/history/HeLink.java b/src/test/java/com/avaje/tests/model/history/HeLink.java new file mode 100644 index 000000000..76e23bdf6 --- /dev/null +++ b/src/test/java/com/avaje/tests/model/history/HeLink.java @@ -0,0 +1,64 @@ +package com.avaje.tests.model.history; + +import com.avaje.ebean.annotation.History; +import com.avaje.ebean.annotation.HistoryExclude; +import com.avaje.tests.model.draftable.BaseDomain; + +import javax.persistence.Entity; +import javax.persistence.ManyToMany; +import java.util.List; + +@History +@Entity +public class HeLink extends BaseDomain { + + String name; + + String location; + + String comment; + + @HistoryExclude + @ManyToMany + List docs; + + public HeLink(String name, String location) { + this.name = name; + this.location = location; + } + + public HeLink() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + public List getDocs() { + return docs; + } + + public void setDocs(List docs) { + this.docs = docs; + } +} diff --git a/src/test/java/com/avaje/tests/model/history/TestHistoryExclude.java b/src/test/java/com/avaje/tests/model/history/TestHistoryExclude.java new file mode 100644 index 000000000..e14105f72 --- /dev/null +++ b/src/test/java/com/avaje/tests/model/history/TestHistoryExclude.java @@ -0,0 +1,49 @@ +package com.avaje.tests.model.history; + +import com.avaje.ebean.BaseTestCase; +import com.avaje.ebean.Ebean; +import org.junit.Test; + +import java.sql.Timestamp; + +import static org.assertj.core.api.StrictAssertions.assertThat; + +public class TestHistoryExclude extends BaseTestCase { + + private HeLink link; + + private void prepare() { + if (link == null) { + HeDoc docA = new HeDoc("doca"); + HeDoc docB = new HeDoc("docb"); + docA.save(); + docB.save(); + + link = new HeLink("some", "link"); + link.getDocs().add(docA); + link.getDocs().add(docB); + link.save(); + } + } + @Test + public void testLazyLoad() { + + prepare(); + + HeLink linkFound = Ebean.find(HeLink.class, link.getId()); + linkFound.getDocs().size(); + } + + @Test + public void testAsOfThenLazy() { + + prepare(); + + HeLink linkFound = Ebean.find(HeLink.class) + .asOf(new Timestamp(System.currentTimeMillis())) + .setId(link.getId()) + .findUnique(); + + assertThat(linkFound.getDocs().size()).isEqualTo(2); + } +}