package com.avaje.tests.cache; import java.util.List; import org.junit.Assert; import org.junit.Test; import com.avaje.ebean.BaseTestCase; import com.avaje.ebean.Ebean; import com.avaje.ebean.cache.ServerCache; import com.avaje.ebean.cache.ServerCacheStatistics; import com.avaje.tests.model.basic.Contact; import com.avaje.tests.model.basic.ResetBasicData; public class TestCacheNaturalId extends BaseTestCase { @Test public void test() { ResetBasicData.reset(); ServerCache contactCache = Ebean.getServerCacheManager().getBeanCache(Contact.class); List list = Ebean.find(Contact.class).setLoadBeanCache(true).findList(); Assert.assertTrue(contactCache.size() > 0); String emailToSearch = null; for (Contact contact : list) { if (contact.getEmail() != null) { emailToSearch = contact.getEmail(); break; } } contactCache.getStatistics(true); Contact c0 = Ebean.find(Contact.class).where().eq("email", emailToSearch).findUnique(); ServerCacheStatistics stats0 = contactCache.getStatistics(false); Contact c1 = Ebean.find(Contact.class).where().eq("email", emailToSearch).findUnique(); ServerCacheStatistics stats1 = contactCache.getStatistics(false); Assert.assertNotNull(c0); Assert.assertNotNull(c1); Assert.assertEquals(1, stats0.getHitCount()); Assert.assertEquals(2, stats1.getHitCount()); c1.setEmail("mychangedemail@what.com"); Ebean.save(c1); Contact c2 = Ebean.find(Contact.class).where().eq("email", "mychangedemail@what.com") .findUnique(); ServerCacheStatistics stats2 = contactCache.getStatistics(false); Assert.assertNotNull(c2); Assert.assertEquals(c2.getId(), c1.getId()); Assert.assertEquals(c0.getId(), c1.getId()); Assert.assertTrue(stats2.getHitCount() > stats1.getHitCount()); } }