mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1223 - Support mapping @DbArray to a List or Set of enums
This commit is contained in:
@@ -7,10 +7,10 @@ import io.ebeaninternal.server.core.bootup.BootupClasses;
|
||||
import io.ebeaninternal.server.type.DefaultTypeManager;
|
||||
import io.ebeaninternal.server.type.RsetDataReader;
|
||||
import io.ebeaninternal.server.type.ScalarType;
|
||||
import org.tests.model.ivo.Money;
|
||||
import org.tests.model.ivo.converter.MoneyTypeConverter;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.ivo.Money;
|
||||
import org.tests.model.ivo.converter.MoneyTypeConverter;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Types;
|
||||
@@ -24,7 +24,7 @@ public class TestTypeManager extends BaseTestCase {
|
||||
|
||||
DefaultTypeManager typeManager = createTypeManager();
|
||||
|
||||
ScalarType<?> type = typeManager.createEnumScalarType(MyEnum.class);
|
||||
ScalarType<?> type = typeManager.createEnumScalarType(MyEnum.class, null);
|
||||
typeManager.addEnumType(type, MyEnum.class);
|
||||
|
||||
Object val = type.read(new DummyDataReader("A"));
|
||||
@@ -49,7 +49,7 @@ public class TestTypeManager extends BaseTestCase {
|
||||
|
||||
DefaultTypeManager typeManager = createTypeManager();
|
||||
|
||||
ScalarType<?> dayOfWeekType = typeManager.createEnumScalarType(MyDayOfWeek.class);
|
||||
ScalarType<?> dayOfWeekType = typeManager.createEnumScalarType(MyDayOfWeek.class, null);
|
||||
|
||||
Object val = dayOfWeekType.read(new DummyDataReader("MONDAY "));
|
||||
assertThat(val).isEqualTo(MyDayOfWeek.MONDAY);
|
||||
|
||||
@@ -8,11 +8,16 @@ import javax.persistence.Id;
|
||||
import javax.persistence.Version;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
public class EArrayBean {
|
||||
|
||||
enum Status {
|
||||
ONE, TWO, THREE
|
||||
}
|
||||
|
||||
@Id
|
||||
Long id;
|
||||
|
||||
@@ -30,6 +35,12 @@ public class EArrayBean {
|
||||
@DbArray
|
||||
List<Double> doubs;
|
||||
|
||||
@DbArray
|
||||
List<Status> statuses;
|
||||
|
||||
@DbArray
|
||||
Set<Status> status2;
|
||||
|
||||
@Version
|
||||
Long version;
|
||||
|
||||
@@ -81,6 +92,23 @@ public class EArrayBean {
|
||||
this.doubs = doubs;
|
||||
}
|
||||
|
||||
public List<Status> getStatuses() {
|
||||
return statuses;
|
||||
}
|
||||
|
||||
public void setStatuses(List<Status> statuses) {
|
||||
this.statuses = statuses;
|
||||
}
|
||||
|
||||
|
||||
public Set<Status> getStatus2() {
|
||||
return status2;
|
||||
}
|
||||
|
||||
public void setStatus2(Set<Status> status2) {
|
||||
this.status2 = status2;
|
||||
}
|
||||
|
||||
public Long getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
@@ -7,7 +7,9 @@ import org.ebeantest.LoggedSqlCollector;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -39,6 +41,13 @@ public class TestDbArray_basic extends BaseTestCase {
|
||||
bean.getOtherIds().add(96L);
|
||||
bean.getOtherIds().add(97L);
|
||||
bean.setDoubs(doubles);
|
||||
bean.setStatuses(new ArrayList<>());
|
||||
bean.getStatuses().add(EArrayBean.Status.ONE);
|
||||
bean.getStatuses().add(EArrayBean.Status.THREE);
|
||||
|
||||
bean.setStatus2(new LinkedHashSet<>());
|
||||
bean.getStatus2().add(EArrayBean.Status.TWO);
|
||||
bean.getStatus2().add(EArrayBean.Status.ONE);
|
||||
|
||||
Ebean.save(bean);
|
||||
|
||||
@@ -53,10 +62,18 @@ public class TestDbArray_basic extends BaseTestCase {
|
||||
.arrayContains("uids", bean.getUids().get(0))
|
||||
.arrayContains("phoneNumbers", "9823")
|
||||
.arrayIsNotEmpty("phoneNumbers")
|
||||
.arrayContains("statuses", EArrayBean.Status.ONE)
|
||||
.arrayContains("status2", EArrayBean.Status.TWO)
|
||||
.query();
|
||||
|
||||
List<EArrayBean> list = query.findList();
|
||||
|
||||
List<EArrayBean.Status> statuses = list.get(0).getStatuses();
|
||||
Set<EArrayBean.Status> status2 = list.get(0).getStatus2();
|
||||
|
||||
assertThat(statuses).contains(EArrayBean.Status.ONE, EArrayBean.Status.THREE);
|
||||
assertThat(status2).contains(EArrayBean.Status.ONE, EArrayBean.Status.TWO);
|
||||
|
||||
assertThat(query.getGeneratedSql()).contains(" t0.other_ids @> array[?,?]::bigint[] ");
|
||||
assertThat(query.getGeneratedSql()).contains(" t0.uids @> array[?] ");
|
||||
assertThat(query.getGeneratedSql()).contains(" t0.phone_numbers @> array[?] ");
|
||||
|
||||
Reference in New Issue
Block a user