package org.tests.basic.lob;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import io.ebean.Query;
import org.tests.model.basic.EBasicClobFetchEager;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class TestBasicClobFetchEager extends BaseTestCase {
@Test
public void test() {
EBasicClobFetchEager entity = new EBasicClobFetchEager();
entity.setName("test");
entity.setDescription("initialClobValue");
EbeanServer server = Ebean.getServer(null);
server.save(entity);
String expectedSql = "select t0.id, t0.name, t0.title, t0.description, t0.last_update from ebasic_clob_fetch_eager t0 where t0.id = ?";
// Clob included in fetch as FetchType.EAGER set by annotation
Query<EBasicClobFetchEager> defaultQuery = Ebean.find(EBasicClobFetchEager.class).setId(entity.getId());
defaultQuery.findUnique();
String sql = trimSql(defaultQuery.getGeneratedSql(), 6);
assertThat(sql).contains(expectedSql);
LoggedSqlCollector.start();
// Same as previous query - clob included by default based on annotation
Ebean.find(EBasicClobFetchEager.class, entity.getId());
// Assert query same as previous ...
List<String> loggedSql = LoggedSqlCollector.stop();
Assert.assertEquals(1, loggedSql.size());
assertThat(trimSql(loggedSql.get(0), 6)).contains(expectedSql);
// Explicitly select * including Clob
Query<EBasicClobFetchEager> explicitQuery = Ebean.find(EBasicClobFetchEager.class).setId(entity.getId()).select("*");
explicitQuery.findUnique();
sql = sqlOf(explicitQuery, 6);
assertThat(sql).contains(expectedSql);
// Update description to test refresh
EBasicClobFetchEager updateBean = new EBasicClobFetchEager();
updateBean.setId(entity.getId());
updateBean.setDescription("modified");
Ebean.update(updateBean);
// Test refresh function
Assert.assertEquals("initialClobValue", entity.getDescription());
LoggedSqlCollector.start();
// Refresh query includes all properties
server.refresh(entity);
// Assert all properties fetched in refresh
loggedSql = LoggedSqlCollector.stop();
Assert.assertEquals(1, loggedSql.size());
assertThat(trimSql(loggedSql.get(0), 6)).contains(expectedSql);
Assert.assertEquals("modified", entity.getDescription());
}
}