package org.tests.update;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.tests.model.embedded.EEmbDatePeriod;
import org.tests.model.embedded.EEmbInner;
import org.tests.model.embedded.EEmbOuter;
import org.junit.Test;
import java.util.Date;
import static org.assertj.core.api.Assertions.assertThat;
public class TestEmbeddedRefreshUpdate extends BaseTestCase {
@Test
public void test() {
EEmbOuter outer = new EEmbOuter();
outer.setNomeOuter("test");
EEmbDatePeriod embeddedBean = new EEmbDatePeriod();
embeddedBean.setDate1(new Date());
outer.setDatePeriod(embeddedBean);
Ebean.save(outer);
EEmbOuter loaded = Ebean.find(EEmbOuter.class).where().idEq(outer.getId()).findUnique();
// if commented Ebean saves correctly
Ebean.refresh(loaded);
loaded.getDatePeriod().setDate2(new Date());
// BUG 343
Ebean.save(loaded);
// See BUG 344
Ebean.find(EEmbInner.class).fetch("outer").orderBy("outer.datePeriod.date1").findList();
}
@Test
public void test2() {
EEmbOuter outer = new EEmbOuter();
outer.setNomeOuter("test");
EEmbDatePeriod embeddedBean = new EEmbDatePeriod();
embeddedBean.setDate1(new Date());
outer.setDatePeriod(embeddedBean);
Ebean.save(outer);
assertThat(outer.getUpdateCount()).isEqualTo(1);
Date d = new Date();
d.setTime(1L);
outer.getDatePeriod().setDate1(d);
Ebean.save(outer);
assertThat(outer.getUpdateCount()).isEqualTo(2);
}
}