diff --git a/ebean-test/src/test/java/org/tests/model/composite/Data2WithFormula.java b/ebean-test/src/test/java/org/tests/model/composite/Data2WithFormula.java new file mode 100644 index 000000000..85997692e --- /dev/null +++ b/ebean-test/src/test/java/org/tests/model/composite/Data2WithFormula.java @@ -0,0 +1,60 @@ +package org.tests.model.composite; + + +import io.ebean.annotation.Index; +import jakarta.persistence.*; + +import java.util.UUID; + +@IdClass(DataWithFormulaKey.class) +@Entity +public class Data2WithFormula { + + @Id + private UUID mainId; + + @Id + private String metaKey; + + @Id + private Integer valueIndex; + + @ManyToOne + @JoinColumn(name = "main_id", insertable = false, nullable = false) + private Data2WithFormulaMain main; + + @Index + private String stringValue; + + public UUID mainId() { + return mainId; + } + + public void setMainId(UUID mainId) { + this.mainId = mainId; + } + + public String getMetaKey() { + return metaKey; + } + + public void setMetaKey(String metaKey) { + this.metaKey = metaKey; + } + + public Integer getValueIndex() { + return valueIndex; + } + + public void setValueIndex(Integer valueIndex) { + this.valueIndex = valueIndex; + } + + public String getStringValue() { + return stringValue; + } + + public void setStringValue(String stringValue) { + this.stringValue = stringValue; + } +} diff --git a/ebean-test/src/test/java/org/tests/model/composite/Data2WithFormulaMain.java b/ebean-test/src/test/java/org/tests/model/composite/Data2WithFormulaMain.java new file mode 100644 index 000000000..e18c9bb28 --- /dev/null +++ b/ebean-test/src/test/java/org/tests/model/composite/Data2WithFormulaMain.java @@ -0,0 +1,45 @@ +package org.tests.model.composite; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; + +import java.util.List; +import java.util.UUID; + +@Entity +public class Data2WithFormulaMain { + + @Id + private UUID id; + + private String title; + + @OneToMany(cascade = CascadeType.ALL, mappedBy = "main") + private List metaData; + + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public List getMetaData() { + return metaData; + } + + public void setMetaData(List metaData) { + this.metaData = metaData; + } +} diff --git a/ebean-test/src/test/java/org/tests/model/composite/TestData2WithFormula.java b/ebean-test/src/test/java/org/tests/model/composite/TestData2WithFormula.java new file mode 100644 index 000000000..4b3848672 --- /dev/null +++ b/ebean-test/src/test/java/org/tests/model/composite/TestData2WithFormula.java @@ -0,0 +1,40 @@ +package org.tests.model.composite; + +import io.ebean.DB; +import io.ebean.test.LoggedSql; +import io.ebean.xtest.BaseTestCase; +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.UUID; + +import static org.assertj.core.api.Assertions.assertThat; + + +class TestData2WithFormula extends BaseTestCase { + + @Test + void test1() { + + Data2WithFormulaMain main = new Data2WithFormulaMain(); + main.setId(UUID.randomUUID()); + main.setTitle("Main"); + + Data2WithFormula data = new Data2WithFormula(); + data.setMainId(main.getId()); + data.setMetaKey("meta"); + data.setValueIndex(42); + data.setStringValue("SomeValue"); + main.setMetaData(List.of(data)); + + LoggedSql.start(); + DB.save(main); + List sqls = LoggedSql.stop(); + + assertThat(sqls).hasSize(3); + assertThat(sqls.get(0)).contains("insert into data2_with_formula_main (id, title) values (?,?);"); // main + assertThat(sqls.get(1)).contains("insert into data2_with_formula (main_id, meta_key, value_index, string_value) values (?,?,?,?)"); // main + assertThat(sqls.get(2)).contains("-- bind"); + + } +}