package org.tests.autofetch;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.embedded.EMain;
import org.tests.model.embedded.Eembeddable;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class AutofetchEmbeddedTest extends BaseTestCase {
private final Logger logger = LoggerFactory.getLogger(AutofetchEmbeddedTest.class);
@Test
public void testEmbeddedBeanLazyLoadAndUpdate() {
EMain testBean = new EMain();
testBean.setName("test");
testBean.getEmbeddable().setDescription("test description");
Ebean.save(testBean);
EMain partialBean = Ebean.find(EMain.class).select("version").setId(testBean.getId()).findOne();
logger.info(" -- invoke lazy loading of embedded bean");
Eembeddable embeddable = partialBean.getEmbeddable();
embeddable.setDescription("modified description");
logger.info(" -- update bean");
Ebean.save(partialBean);
}
@Test
public void testEmbeddedBeanQueryTuning() {
// Ebean.getServer(null).getAutoTune().setProfiling(true);
// Ebean.getServer(null).getAutoTune().setQueryTuning(true);
// Ebean.getServer(null).getAutoTune().setProfilingBase(1);
//
// EMain testBean = new EMain();
// testBean.setName("test");
// testBean.getEmbeddable().setDescription("test description");
// Ebean.save(testBean);
//
// //This should not throw an exception
// for (int i = 0; i < 5; i++) {
// Ebean.beginTransaction();
// try {
// List<EMain> result = Ebean.find(EMain.class).setAutoTune(true).findList();
// for (EMain e : result) {
// e.getEmbeddable().setDescription("Test" + i);
// Ebean.save(e);
// }
// Ebean.commitTransaction();
// } finally {
// Ebean.endTransaction();
// logger.debug(Ebean.getServer(null).getAutoTune().collectProfiling());
// }
// }
}
@Test
public void testEmbeddedFetch() {
Ebean.find(EMain.class).fetch("embeddable").findList();
}
}