diff --git a/ebean-redis/src/test/java/org/domain/UChild.java b/ebean-redis/src/test/java/org/domain/UChild.java new file mode 100644 index 000000000..64a0641aa --- /dev/null +++ b/ebean-redis/src/test/java/org/domain/UChild.java @@ -0,0 +1,39 @@ +package org.domain; + +import io.ebean.Model; +import io.ebean.annotation.Cache; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; + +@Cache +@Entity +public class UChild extends Model { + + @Id + long id; + + String name; + + @ManyToOne + final UParent parent; + + public UChild(UParent parent, String name) { + this.parent = parent; + this.name = name; + } + + public long id() { + return id; + } + + public String name() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/ebean-redis/src/test/java/org/domain/UParent.java b/ebean-redis/src/test/java/org/domain/UParent.java new file mode 100644 index 000000000..25b42f12e --- /dev/null +++ b/ebean-redis/src/test/java/org/domain/UParent.java @@ -0,0 +1,51 @@ +package org.domain; + +import io.ebean.Model; +import io.ebean.annotation.Cache; +import io.ebean.annotation.CacheBeanTuning; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Cache(enableQueryCache = true) +@CacheBeanTuning(maxSecsToLive = 1) +@Entity +public class UParent extends Model { + + @Id + private UUID id; + + private String name; + + @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) + private final List children = new ArrayList<>(); + + public UParent(String name) { + this.name = name; + } + + public UUID id() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String name() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List children() { + return children; + } +} diff --git a/ebean-redis/src/test/java/org/domain/UUIDAsIDModel.java b/ebean-redis/src/test/java/org/domain/UUIDAsIDModel.java deleted file mode 100644 index 9bce8f3b9..000000000 --- a/ebean-redis/src/test/java/org/domain/UUIDAsIDModel.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.domain; - -import io.ebean.Model; -import io.ebean.annotation.Cache; -import io.ebean.annotation.CacheBeanTuning; - -import javax.persistence.Entity; -import javax.persistence.Id; -import java.util.UUID; - -@Cache(enableQueryCache = true, nearCache = true, naturalKey = "uuidModel") -@CacheBeanTuning(maxSecsToLive = 1) -@Entity -public class UUIDAsIDModel extends Model { - - @Id - UUID uuid; - - String name; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public UUID getUuid() { - return uuid; - } - - public void setUuid(UUID uuid) { - this.uuid = uuid; - } -} diff --git a/ebean-redis/src/test/java/org/integration/IntegrationTest.java b/ebean-redis/src/test/java/org/integration/IntegrationTest.java index d6c4e3230..979aeea6e 100644 --- a/ebean-redis/src/test/java/org/integration/IntegrationTest.java +++ b/ebean-redis/src/test/java/org/integration/IntegrationTest.java @@ -5,6 +5,8 @@ import io.ebean.cache.ServerCache; import io.ebean.cache.ServerCacheStatistics; import org.domain.Person; import org.domain.RCust; +import org.domain.UChild; +import org.domain.UParent; import org.domain.query.QPerson; import org.domain.query.QRCust; import org.junit.jupiter.api.Test; @@ -19,6 +21,32 @@ import static org.assertj.core.api.Assertions.assertThat; class IntegrationTest { + @Test + void uuid_getPut() { + UParent b0 = new UParent("b0"); + b0.children().add(new UChild(b0,"b0c0")); + b0.children().add(new UChild(b0,"b0c1")); + b0.save(); + + ServerCache beanCache = DB.cacheManager().beanCache(UParent.class); + beanCache.clear(); + beanCache.statistics(true); + + UParent found0 = DB.find(UParent.class, b0.id()); + assertThat(found0.name()).isEqualTo("b0"); + + List children = found0.children(); + assertThat(children).hasSize(2); + + UParent found1 = DB.find(UParent.class, b0.id()); + assertThat(found1.name()).isEqualTo("b0"); + + DB.delete(found1); + + ServerCacheStatistics stats1 = beanCache.statistics(true); + assertThat(stats1.getHitCount()).isEqualTo(1); + } + @Test void mget_when_emptyCollectionOfIds() { diff --git a/ebean-redis/src/test/resources/application-test.yaml b/ebean-redis/src/test/resources/application-test.yaml index 870423533..8677f7579 100644 --- a/ebean-redis/src/test/resources/application-test.yaml +++ b/ebean-redis/src/test/resources/application-test.yaml @@ -2,6 +2,7 @@ ebean: dumpMetricsOnShutdown: true dumpMetricsOptions: sql,hash,loc test: + registerTestTenantProvider: false redis: latest # shutdown: stop # stop | remove platform: h2 # h2, postgres, mysql, oracle, sqlserver, sqlite diff --git a/ebean-test/src/main/java/io/ebean/test/config/provider/ProviderAutoConfig.java b/ebean-test/src/main/java/io/ebean/test/config/provider/ProviderAutoConfig.java index 0be14af3a..d0784c3de 100644 --- a/ebean-test/src/main/java/io/ebean/test/config/provider/ProviderAutoConfig.java +++ b/ebean-test/src/main/java/io/ebean/test/config/provider/ProviderAutoConfig.java @@ -38,8 +38,10 @@ public class ProviderAutoConfig { CurrentTenantProvider tenantProvider = config.getCurrentTenantProvider(); if (tenantProvider == null) { - providerSetFlag += 2; - config.setCurrentTenantProvider(new WhoTenantProvider()); + if (Boolean.parseBoolean(properties.getProperty("ebean.test.registerTestTenantProvider", "true"))) { + providerSetFlag += 2; + config.setCurrentTenantProvider(new WhoTenantProvider()); + } } EncryptKeyManager keyManager = config.getEncryptKeyManager();