diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java similarity index 95% rename from ebean-test/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java rename to ebean-core/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java index 886a05618..07c845a60 100644 --- a/ebean-test/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java @@ -1,6 +1,6 @@ package io.ebeaninternal.server.cache; -import io.ebean.xtest.BaseTestCase; +import io.ebean.DB; import io.ebean.bean.EntityBean; import io.ebean.bean.PersistenceContext; import io.ebeaninternal.api.SpiEbeanServer; @@ -20,12 +20,12 @@ import java.sql.Timestamp; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -public class CacheBeanDataTest extends BaseTestCase { +public class CacheBeanDataTest { @Test public void extract_load_on_customer() { - SpiEbeanServer server = spiEbeanServer(); + SpiEbeanServer server = (SpiEbeanServer)DB.getDefault(); BeanDescriptor desc = server.descriptor(Customer.class); Customer c = new Customer(); @@ -77,7 +77,7 @@ public class CacheBeanDataTest extends BaseTestCase { @Test public void extract_load_withEmbeddedBean() { - SpiEbeanServer server = spiEbeanServer(); + SpiEbeanServer server = (SpiEbeanServer)DB.getDefault(); BeanDescriptor desc = server.descriptor(EPerson.class); BeanPropertyAssocOne addressBeanProperty = (BeanPropertyAssocOne) desc.beanProperty("address"); diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java similarity index 93% rename from ebean-test/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java rename to ebean-core/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java index 1469e4fb2..cd68302bd 100644 --- a/ebean-test/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java @@ -1,6 +1,6 @@ package io.ebeaninternal.server.cache; -import io.ebean.xtest.BaseTestCase; +import io.ebean.DB; import io.ebean.bean.EntityBean; import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.server.deploy.BeanDescriptor; @@ -17,9 +17,9 @@ import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; -public class CachedBeanDataFromBeanTest extends BaseTestCase { +public class CachedBeanDataFromBeanTest { - private final SpiEbeanServer server = spiEbeanServer(); + private final SpiEbeanServer server = (SpiEbeanServer)DB.getDefault(); @Test public void extract() { @@ -84,7 +84,7 @@ public class CachedBeanDataFromBeanTest extends BaseTestCase { // mutate, dirty contact.setLastName("Banana"); - final BeanDescriptor desc = getBeanDescriptor(Contact.class); + final BeanDescriptor desc = server.descriptor(Contact.class); CachedBeanData cacheData = CachedBeanDataFromBean.extract(desc, entityBean); final Map data = cacheData.getData(); @@ -115,7 +115,7 @@ public class CachedBeanDataFromBeanTest extends BaseTestCase { contact.setCustomer(customer2); contact.setLastName("Banana"); - final BeanDescriptor desc = getBeanDescriptor(Contact.class); + final BeanDescriptor desc = server.descriptor(Contact.class); CachedBeanData cacheData = CachedBeanDataFromBean.extract(desc, entityBean); final Map data = cacheData.getData(); diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataSerializeTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataSerializeTest.java similarity index 88% rename from ebean-test/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataSerializeTest.java rename to ebean-core/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataSerializeTest.java index b4804b97a..7e54d1d1e 100644 --- a/ebean-test/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataSerializeTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataSerializeTest.java @@ -1,27 +1,26 @@ package io.ebeaninternal.server.cache; -import io.ebean.xtest.BaseTestCase; import io.ebean.DB; import io.ebean.bean.EntityBean; +import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.server.deploy.BeanDescriptor; import io.ebeaninternal.server.transaction.DefaultPersistenceContext; import org.junit.jupiter.api.Test; import org.tests.model.basic.Customer; -import org.tests.model.basic.ResetBasicData; import org.tests.model.basic.TBytesOnly; import java.io.*; import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +public class CachedBeanDataSerializeTest { -public class CachedBeanDataSerializeTest extends BaseTestCase { + private final SpiEbeanServer db = (SpiEbeanServer)DB.getDefault(); @Test public void write() throws IOException, ClassNotFoundException { @@ -58,16 +57,13 @@ public class CachedBeanDataSerializeTest extends BaseTestCase { @Test public void fullBean() throws IOException, ClassNotFoundException { + Customer customer = new Customer(); + customer.setId(42); + customer.setName("FooBar"); + customer.setStatus(Customer.Status.INACTIVE); + customer.setVersion(3L); - ResetBasicData.reset(); - - List customers = DB.find(Customer.class) - .order().asc("id") - .setMaxRows(1).findList(); - - Customer customer = customers.get(0); - - BeanDescriptor desc = getBeanDescriptor(Customer.class); + BeanDescriptor desc = db.descriptor(Customer.class); CachedBeanData extract = CachedBeanDataFromBean.extract(desc, (EntityBean) customer); ByteArrayOutputStream os = new ByteArrayOutputStream(); @@ -97,7 +93,7 @@ public class CachedBeanDataSerializeTest extends BaseTestCase { bean.setId(42); bean.setContent(stringContent.getBytes(StandardCharsets.UTF_8)); - BeanDescriptor desc = getBeanDescriptor(TBytesOnly.class); + BeanDescriptor desc = db.descriptor(TBytesOnly.class); CachedBeanData extract = CachedBeanDataFromBean.extract(desc, (EntityBean) bean); ByteArrayOutputStream os = new ByteArrayOutputStream(); diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/cache/DefaultCacheHolder_getCacheOptions_Test.java b/ebean-core/src/test/java/io/ebeaninternal/server/cache/DefaultCacheHolder_getCacheOptions_Test.java similarity index 100% rename from ebean-test/src/test/java/io/ebeaninternal/server/cache/DefaultCacheHolder_getCacheOptions_Test.java rename to ebean-core/src/test/java/io/ebeaninternal/server/cache/DefaultCacheHolder_getCacheOptions_Test.java diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/cache/DefaultServerCacheManagerTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/cache/DefaultServerCacheManagerTest.java similarity index 100% rename from ebean-test/src/test/java/io/ebeaninternal/server/cache/DefaultServerCacheManagerTest.java rename to ebean-core/src/test/java/io/ebeaninternal/server/cache/DefaultServerCacheManagerTest.java diff --git a/ebean-core/src/test/java/org/tests/model/basic/Article.java b/ebean-core/src/test/java/org/tests/model/basic/Article.java new file mode 100644 index 000000000..797366edd --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/Article.java @@ -0,0 +1,62 @@ +package org.tests.model.basic; + +import io.ebean.annotation.Cache; +import io.ebean.annotation.CacheBeanTuning; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.OneToMany; +import java.util.ArrayList; +import java.util.List; + + +@Cache +@CacheBeanTuning(maxSecsToLive = 45) +@Entity +public class Article extends BasicDomain { + private static final long serialVersionUID = -7181090513848918784L; + + String name; + + String author; + + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + List
sections; + + public Article(String name, String author) { + this.name = name; + this.author = author; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public List
getSections() { + return sections; + } + + public void setSections(List
sections) { + this.sections = sections; + } + + public void addSection(Section s) { + if (sections == null) { + sections = new ArrayList<>(); + } + sections.add(s); + } + +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/Car.java b/ebean-core/src/test/java/org/tests/model/basic/Car.java new file mode 100644 index 000000000..268920a34 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/Car.java @@ -0,0 +1,84 @@ +package org.tests.model.basic; + +import io.ebean.annotation.DbEnumValue; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Entity +@Inheritance +@DiscriminatorValue("C") +public class Car extends Vehicle { + private static final long serialVersionUID = -65427345082456523L; + + public enum Size { + SMALL("S"), + LARGE("L"); + + String value; + + Size(String value) { + this.value = value; + } + + @DbEnumValue + public String value() { + return value; + } + } + + @Column(name = "siz") + private Size size; + + private String driver; + + @ManyToOne + private TruckRef carRef; + + @OneToMany(mappedBy = "car") + @OrderBy("fuse.locationCode") + private Set accessories = new HashSet<>(); + + private String notes; + + public String getDriver() { + return driver; + } + + public void setDriver(String driver) { + this.driver = driver; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + public TruckRef getCarRef() { + return carRef; + } + + public void setCarRef(TruckRef carRef) { + this.carRef = carRef; + } + + public Set getAccessories() { + return accessories; + } + + public void setAccessories(Set accessories) { + this.accessories = accessories; + } + + public Size getSize() { + return size; + } + + public void setSize(Size size) { + this.size = size; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/CarAccessory.java b/ebean-core/src/test/java/org/tests/model/basic/CarAccessory.java new file mode 100644 index 000000000..37ee5720e --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/CarAccessory.java @@ -0,0 +1,47 @@ +package org.tests.model.basic; + +import javax.persistence.Entity; +import javax.persistence.ManyToOne; + +@Entity +public class CarAccessory extends BasicDomain { + + private static final long serialVersionUID = 1L; + + private String name; + + @ManyToOne(optional = false) + private CarFuse fuse; + + @ManyToOne + private Car car; + + public CarAccessory(Car car, CarFuse fuse) { + this.car = car; + this.fuse = fuse; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Car getCar() { + return car; + } + + public void setCar(Car car) { + this.car = car; + } + + public CarFuse getFuse() { + return fuse; + } + + public void setFuse(CarFuse fuse) { + this.fuse = fuse; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/CarFuse.java b/ebean-core/src/test/java/org/tests/model/basic/CarFuse.java new file mode 100644 index 000000000..df2aef5bf --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/CarFuse.java @@ -0,0 +1,29 @@ +package org.tests.model.basic; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class CarFuse { + + @Id + Long id; + + String locationCode; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getLocationCode() { + return locationCode; + } + + public void setLocationCode(String locationCode) { + this.locationCode = locationCode; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/Section.java b/ebean-core/src/test/java/org/tests/model/basic/Section.java new file mode 100644 index 000000000..039541188 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/Section.java @@ -0,0 +1,77 @@ +package org.tests.model.basic; + +import io.ebean.annotation.Cache; + +import javax.persistence.*; +import java.util.ArrayList; +import java.util.List; + +@Cache +@Entity +public class Section extends BasicDomain { + + private static final long serialVersionUID = 1L; + + public enum Type { + GENERAL, + NOTE + } + + @ManyToOne + Article article; + + Type type = Type.GENERAL; + + @Lob + String content; + + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + List subSections; + + public Section() { + } + + public Section(String content) { + this.content = content; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Article getArticle() { + return article; + } + + public void setArticle(Article article) { + this.article = article; + } + + public List getSubSections() { + return subSections; + } + + public void setSubSections(List subSections) { + this.subSections = subSections; + } + + public void addSubSection(SubSection s) { + if (subSections == null) { + subSections = new ArrayList<>(); + } + subSections.add(s); + } + +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/SubSection.java b/ebean-core/src/test/java/org/tests/model/basic/SubSection.java new file mode 100644 index 000000000..b5e8888f2 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/SubSection.java @@ -0,0 +1,34 @@ +package org.tests.model.basic; + +import io.ebean.annotation.Cache; + +import javax.persistence.Entity; +import javax.persistence.ManyToOne; + +@Cache +@Entity +public class SubSection extends BasicDomain { + + private static final long serialVersionUID = 1L; + + @ManyToOne + private Section section; + + private String title; + + public SubSection() { + } + + public SubSection(String title) { + this.title = title; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/TBytesOnly.java b/ebean-core/src/test/java/org/tests/model/basic/TBytesOnly.java new file mode 100644 index 000000000..80c0f8d36 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/TBytesOnly.java @@ -0,0 +1,31 @@ +package org.tests.model.basic; + +import javax.persistence.*; + +@Entity +public class TBytesOnly { + + @Id + Integer id; + + @Lob + @Basic(fetch = FetchType.EAGER) + byte[] content; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public byte[] getContent() { + return content; + } + + public void setContent(byte[] content) { + this.content = content; + } + +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/Truck.java b/ebean-core/src/test/java/org/tests/model/basic/Truck.java new file mode 100644 index 000000000..c32d70777 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/Truck.java @@ -0,0 +1,62 @@ +package org.tests.model.basic; + +import io.ebean.annotation.DbEnumValue; + +import javax.persistence.*; + +@Entity +@Inheritance +@DiscriminatorValue("T") +public class Truck extends Vehicle { + private static final long serialVersionUID = 9195535931523211134L; + + public enum Size { + SMALL("S"), + MEDIUM("M"), + LARGE("L"), + HUGE("H"); + + String value; + + Size(String value) { + this.value = value; + } + + @DbEnumValue(length = 3) + public String value() { + return value; + } + } + + @Column(name = "siz") + private Size size; + + @ManyToOne + TruckRef truckRef; + + private Double capacity; + + public Double getCapacity() { + return capacity; + } + + public void setCapacity(Double capacity) { + this.capacity = capacity; + } + + public TruckRef getTruckRef() { + return truckRef; + } + + public void setTruckRef(TruckRef truckRef) { + this.truckRef = truckRef; + } + + public Size getSize() { + return size; + } + + public void setSize(Size size) { + this.size = size; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/TruckRef.java b/ebean-core/src/test/java/org/tests/model/basic/TruckRef.java new file mode 100644 index 000000000..56cbc171b --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/TruckRef.java @@ -0,0 +1,30 @@ +package org.tests.model.basic; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class TruckRef { + + @Id + Integer id; + + String something; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getSomething() { + return something; + } + + public void setSomething(String something) { + this.something = something; + } + +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/Vehicle.java b/ebean-core/src/test/java/org/tests/model/basic/Vehicle.java new file mode 100644 index 000000000..cab8c4dde --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/Vehicle.java @@ -0,0 +1,57 @@ +package org.tests.model.basic; + +import javax.persistence.DiscriminatorColumn; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.ManyToOne; +import java.util.Date; + +@Entity +@Inheritance +@DiscriminatorColumn(length = 3) +public abstract class Vehicle extends BasicDomain { + + private static final long serialVersionUID = -3060920549470002030L; + + private String licenseNumber; + + private Date registrationDate; + + // @Transient + private transient String testTransient; + + @ManyToOne + private VehicleLease lease; + + public String getLicenseNumber() { + return licenseNumber; + } + + public void setLicenseNumber(String licenseNumber) { + this.licenseNumber = licenseNumber; + } + + public Date getRegistrationDate() { + return registrationDate; + } + + public void setRegistrationDate(Date registrationDate) { + this.registrationDate = registrationDate; + } + + public String getTestTransient() { + return testTransient; + } + + public void setTestTransient(String testTransient) { + this.testTransient = testTransient; + } + + public VehicleLease getLease() { + return lease; + } + + public void setLease(VehicleLease lease) { + this.lease = lease; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/VehicleDriver.java b/ebean-core/src/test/java/org/tests/model/basic/VehicleDriver.java new file mode 100644 index 000000000..00119e5ec --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/VehicleDriver.java @@ -0,0 +1,54 @@ +package org.tests.model.basic; + +import javax.persistence.Entity; +import javax.persistence.ManyToOne; +import java.util.Date; + +@Entity +public class VehicleDriver extends BasicDomain { + + private static final long serialVersionUID = 1L; + + private String name; + + @ManyToOne(optional = true) + private Vehicle vehicle; + + @ManyToOne(optional = true) + private Address address; + + private Date licenseIssuedOn; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Vehicle getVehicle() { + return vehicle; + } + + public void setVehicle(Vehicle vehicle) { + this.vehicle = vehicle; + } + + public Address getAddress() { + return address; + } + + public void setAddress(Address address) { + this.address = address; + } + + public Date getLicenseIssuedOn() { + return licenseIssuedOn; + } + + public void setLicenseIssuedOn(Date licenseIssuedOn) { + this.licenseIssuedOn = licenseIssuedOn; + } + +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/VehicleLease.java b/ebean-core/src/test/java/org/tests/model/basic/VehicleLease.java new file mode 100644 index 000000000..1aa7b703d --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/VehicleLease.java @@ -0,0 +1,64 @@ +package org.tests.model.basic; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.Version; +import java.time.LocalDate; + +@Entity +@Inheritance +public abstract class VehicleLease { + + @Id + long id; + + String name; + + LocalDate activeStart; + + LocalDate activeEnd; + + @Version + long version; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public long getVersion() { + return version; + } + + public void setVersion(long version) { + this.version = version; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public LocalDate getActiveStart() { + return activeStart; + } + + public void setActiveStart(LocalDate activeStart) { + this.activeStart = activeStart; + } + + public LocalDate getActiveEnd() { + return activeEnd; + } + + public void setActiveEnd(LocalDate activeEnd) { + this.activeEnd = activeEnd; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/VehicleLeaseLong.java b/ebean-core/src/test/java/org/tests/model/basic/VehicleLeaseLong.java new file mode 100644 index 000000000..4af74793f --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/VehicleLeaseLong.java @@ -0,0 +1,32 @@ +package org.tests.model.basic; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import java.math.BigDecimal; + +@Entity +@Inheritance +@DiscriminatorValue("LONG") +public class VehicleLeaseLong extends VehicleLease { + + BigDecimal bond; + + int minDuration; + + public BigDecimal getBond() { + return bond; + } + + public void setBond(BigDecimal bond) { + this.bond = bond; + } + + public int getMinDuration() { + return minDuration; + } + + public void setMinDuration(int minDuration) { + this.minDuration = minDuration; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/basic/VehicleLeaseShort.java b/ebean-core/src/test/java/org/tests/model/basic/VehicleLeaseShort.java new file mode 100644 index 000000000..6e5ccbee5 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/basic/VehicleLeaseShort.java @@ -0,0 +1,33 @@ +package org.tests.model.basic; + +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.Inheritance; +import java.math.BigDecimal; + +@Entity +@Inheritance +@DiscriminatorValue("SHORT") +public class VehicleLeaseShort extends VehicleLease { + + + BigDecimal dayRate; + + Integer maxDays; + + public BigDecimal getDayRate() { + return dayRate; + } + + public void setDayRate(BigDecimal dayRate) { + this.dayRate = dayRate; + } + + public Integer getMaxDays() { + return maxDays; + } + + public void setMaxDays(Integer maxDays) { + this.maxDays = maxDays; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/embedded/EAddress.java b/ebean-core/src/test/java/org/tests/model/embedded/EAddress.java new file mode 100644 index 000000000..6ba9d4c41 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/embedded/EAddress.java @@ -0,0 +1,77 @@ +package org.tests.model.embedded; + +import io.ebean.annotation.DbJson; + +import javax.persistence.Column; +import javax.persistence.Embeddable; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import java.util.Map; + +@Embeddable +public class EAddress { + + @Column(nullable = false) + String street; + + String suburb; + + String city; + + @Enumerated(EnumType.STRING) + EAddressStatus status; + +// @DbJson +// PlainBean jbean; + + @DbJson + Map jraw; + + public String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getSuburb() { + return suburb; + } + + public void setSuburb(String suburb) { + this.suburb = suburb; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + +// public PlainBean getJbean() { +// return jbean; +// } +// +// public void setJbean(PlainBean jbean) { +// this.jbean = jbean; +// } + + public Map getJraw() { + return jraw; + } + + public void setJraw(Map jraw) { + this.jraw = jraw; + } + + public EAddressStatus getStatus() { + return status; + } + + public void setStatus(EAddressStatus status) { + this.status = status; + } +} diff --git a/ebean-core/src/test/java/org/tests/model/embedded/EAddressStatus.java b/ebean-core/src/test/java/org/tests/model/embedded/EAddressStatus.java new file mode 100644 index 000000000..fb4eb0119 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/embedded/EAddressStatus.java @@ -0,0 +1,24 @@ +package org.tests.model.embedded; + +public enum EAddressStatus { + + ONE("One") { + @Override + public String doIt() { + return 10 + name; + } + }, + TWO("Two") { + @Override + public String doIt() { + return 20 + name; + } + }; + + String name; + + EAddressStatus(String name) { + this.name = name; + } + public abstract String doIt(); +} diff --git a/ebean-core/src/test/java/org/tests/model/embedded/EPerson.java b/ebean-core/src/test/java/org/tests/model/embedded/EPerson.java new file mode 100644 index 000000000..ef5e82a80 --- /dev/null +++ b/ebean-core/src/test/java/org/tests/model/embedded/EPerson.java @@ -0,0 +1,66 @@ +package org.tests.model.embedded; + +import javax.persistence.*; + +@Entity +public class EPerson { + + @Id + Long id; + + @Version + Long version; + + String name; + + String notes; + + @Embedded + @AttributeOverrides({ + @AttributeOverride(name = "city", column = @Column(name = "addr_city")), + @AttributeOverride(name = "status", column = @Column(name = "addr_status")), + @AttributeOverride(name = "jbean", column = @Column(name = "addr_jbean")) + }) + EAddress address; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + public EAddress getAddress() { + return address; + } + + public void setAddress(EAddress address) { + this.address = address; + } + +} diff --git a/ebean-core/src/test/resources/application-test.properties b/ebean-core/src/test/resources/application-test.properties new file mode 100644 index 000000000..d42469e88 --- /dev/null +++ b/ebean-core/src/test/resources/application-test.properties @@ -0,0 +1,6 @@ +datasource.default=h2 + +datasource.h2.username=sa +datasource.h2.password= +datasource.h2.url=jdbc:h2:mem:testCoreMem;DB_CLOSE_ON_EXIT=FALSE;NON_KEYWORDS=KEY,VALUE +