#2278 - Embedded bean override with DbJson property

This commit is contained in:
rbygrave
2021-07-30 23:22:06 +12:00
parent 2691221168
commit 443e826f61
7 changed files with 49 additions and 26 deletions
@@ -1,5 +1,8 @@
package org.tests.model.embedded;
import io.ebean.annotation.DbJson;
import org.tests.model.json.PlainBean;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EnumType;
@@ -18,6 +21,9 @@ public class EAddress {
@Enumerated(EnumType.STRING)
EAddressStatus status;
@DbJson
PlainBean jbean;
public String getStreet() {
return street;
}
@@ -42,6 +48,14 @@ public class EAddress {
this.city = city;
}
public PlainBean getJbean() {
return jbean;
}
public void setJbean(PlainBean jbean) {
this.jbean = jbean;
}
public EAddressStatus getStatus() {
return status;
}
@@ -24,7 +24,8 @@ public class EPerson {
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "city", column = @Column(name = "addr_city")),
@AttributeOverride(name = "status", column = @Column(name = "addr_status"))
@AttributeOverride(name = "status", column = @Column(name = "addr_status")),
@AttributeOverride(name = "jbean", column = @Column(name = "addr_jbean"))
})
EAddress address;
@@ -1,12 +1,13 @@
package org.tests.rawsql.nativesql;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.DB;
import io.ebean.Query;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import org.tests.model.embedded.EAddress;
import org.tests.model.embedded.EPerson;
import org.tests.model.json.PlainBean;
import java.util.List;
@@ -22,20 +23,22 @@ public class TestNativeWithEmbedded extends BaseTestCase {
EAddress address = new EAddress();
address.setStreet("1 foo st");
address.setCity("barv");
address.setJbean(new PlainBean("hi", 3));
person.setAddress(address);
Ebean.save(person);
DB.save(person);
String sql = "select id, name, street, suburb, addr_city, addr_status from eperson where id = ?";
String sql = "select id, name, street, suburb, addr_city, addr_status, addr_jbean from eperson where id = ?";
LoggedSqlCollector.start();
Query<EPerson> query = Ebean.findNative(EPerson.class, sql);
Query<EPerson> query = DB.findNative(EPerson.class, sql);
query.setParameter(person.getId());
EPerson one = query.findOne();
assertThat(one.getName()).isEqualTo("Frank");
assertThat(one.getAddress().getStreet()).isEqualTo("1 foo st");
assertThat(one.getAddress().getJbean().getName()).isEqualTo("hi");
List<String> loggedSql = LoggedSqlCollector.stop();
assertThat(loggedSql).hasSize(1);