Last active
December 17, 2015 01:49
-
-
Save peter-fu/5531097 to your computer and use it in GitHub Desktop.
This is a Self-Ref test case for Ebean ORM. Please create a package named com.avaje.tests.model.selfref, and put Customer.java under that. Please put TestTextJsonSelfRef.java under com.avaje.tests.text.json package.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.avaje.tests.model.selfref; | |
import javax.persistence.Entity; | |
import javax.persistence.Id; | |
import javax.persistence.JoinColumn; | |
import javax.persistence.ManyToOne; | |
import javax.persistence.Table; | |
@Entity | |
@Table(name="self_ref_customer") | |
public class Customer { | |
@Id | |
Long id; | |
String name; | |
@ManyToOne | |
@JoinColumn(name = "referred_by_id") | |
Customer referredBy; | |
public Long getId() { | |
return id; | |
} | |
public void setId(Long id) { | |
this.id = id; | |
} | |
public String getName() { | |
return name; | |
} | |
public void setName(String name) { | |
this.name = name; | |
} | |
public Customer getReferredBy() { | |
return referredBy; | |
} | |
public void setReferredBy(Customer referredBy) { | |
this.referredBy = referredBy; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.avaje.tests.text.json; | |
import java.util.List; | |
import junit.framework.Assert; | |
import org.junit.Test; | |
import com.avaje.ebean.BaseTestCase; | |
import com.avaje.ebean.Ebean; | |
import com.avaje.ebean.TxRunnable; | |
import com.avaje.tests.model.selfref.Customer; | |
public class TestTextJsonSelfRef extends BaseTestCase { | |
@Test | |
public void test() { | |
Ebean.execute(new TxRunnable() { | |
public void run() { | |
if (Ebean.find(Customer.class).findRowCount() == 0) { | |
Customer c1 = new Customer(); | |
c1.setName("Foo"); | |
c1.setReferredBy(c1); | |
Customer c2 = new Customer(); | |
c2.setName("Bar"); | |
c2.setReferredBy(c1); | |
Customer c3 = new Customer(); | |
c3.setName("baz"); | |
c3.setReferredBy(c1); | |
Ebean.save(c1); | |
Ebean.save(c2); | |
Ebean.save(c3); | |
} | |
} | |
}); | |
List<Customer> customers = Ebean.find(Customer.class).orderBy("id desc").findList(); | |
System.out.println("Customers: " + Ebean.createJsonContext().toJsonString(customers)); | |
Assert.assertEquals( | |
"[{\"id\":3,\"name\":\"baz\",\"referredBy\":{\"id\":1}},{\"id\":2,\"name\":\"Bar\",\"referredBy\":{\"id\":1}},{\"id\":1,\"name\":\"Foo\",\"referredBy\":{\"id\":1}}]", | |
Ebean.createJsonContext().toJsonString(customers)); | |
} | |
} |
Thanks Peter. I'll look to pull that test in tomorrow night. I'm pretty sure I follow what the issue is and your suggested fix. Ta.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Expected result:
[{"id":3,"name":"baz","referredBy":{"id":1}},{"id":2,"name":"Bar","referredBy":{"id":1}},{"id":1,"name":"Foo","referredBy":{"id":1}}]
Actual result:
[{"id":3,"name":"baz","referredBy":{"id":1}},{"id":2,"name":"Bar","referredBy":{"id":1}},{"id":1}]