#1559 - @Lob with @ElementCollection

This commit is contained in:
rob bygrave
2018-12-03 21:07:33 +13:00
parent 315b39813b
commit e876ef8d87
3 changed files with 115 additions and 0 deletions
@@ -0,0 +1,71 @@
package org.tests.model.elementcollection;
import io.ebean.annotation.Cache;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.MapKeyColumn;
import javax.persistence.Version;
import java.util.LinkedHashMap;
import java.util.Map;
@Cache
@Entity
public class EcmcPerson {
@Id
long id;
String name;
@ElementCollection
@MapKeyColumn(name = "type", length = 4)
@Lob
Map<String, String> phoneNumbers = new LinkedHashMap<>();
@Version
long version;
public EcmcPerson(String name) {
this.name = name;
}
@Override
public String toString() {
return "person id:" + id + " name:" + name + " phs:" + phoneNumbers;
}
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 Map<String, String> getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(Map<String, String> phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
public long getVersion() {
return version;
}
public void setVersion(long version) {
this.version = version;
}
}
@@ -0,0 +1,39 @@
package org.tests.model.elementcollection;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class TestElementCollectionBasicMapAsLob extends BaseTestCase {
@Test
public void test() {
LoggedSqlCollector.start();
EcmcPerson person = new EcmcPerson("Lob021");
person.getPhoneNumbers().put("home", "021 1234");
person.getPhoneNumbers().put("work", "021 4321");
Ebean.save(person);
List<String> sql = LoggedSqlCollector.current();
if (isPersistBatchOnCascade()) {
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("insert into ecmc_person");
assertThat(sql.get(1)).contains("insert into ecmc_person_phone");
} else {
assertThat(sql).hasSize(3);
assertThat(sql.get(0)).contains("insert into ecmc_person");
assertThat(sql.get(1)).contains("insert into ecmc_person_phone");
assertThat(sql.get(2)).contains("insert into ecmc_person_phone");
}
LoggedSqlCollector.stop();
}
}