diff --git a/pom.xml b/pom.xml index e54f621..eca2051 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ io.ebean ebean - 12.1.8 + 12.1.9-SNAPSHOT @@ -41,6 +41,12 @@ provided + + com.microsoft.sqlserver + mssql-jdbc + 7.4.1.jre11 + + diff --git a/src/main/java/org/example/domain/AddressData.java b/src/main/java/org/example/domain/AddressData.java new file mode 100644 index 0000000..d625985 --- /dev/null +++ b/src/main/java/org/example/domain/AddressData.java @@ -0,0 +1,37 @@ +package org.example.domain; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "Addresses")//, schema = "dev") +public class AddressData extends BaseModel { + @Id + //@GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "AddressID") + private Long id; + + @Column(name = "Name", length = 50, nullable = false) + private String name; + + @Column(name = "Address1", length = 75) + private String address1; + + @Column(name = "Address2", length = 75) + private String address2; + + @Column(name = "City", length = 50) + private String city; + + @Column(name = "State", length = 50) + private String state; + + @Column(name = "Zip", length = 50) + private String zipCode; + + @Column(name = "Country", length = 50) + private String country; + +} diff --git a/src/main/java/org/example/domain/BaseModel.java b/src/main/java/org/example/domain/BaseModel.java new file mode 100644 index 0000000..95f41f8 --- /dev/null +++ b/src/main/java/org/example/domain/BaseModel.java @@ -0,0 +1,14 @@ +package org.example.domain; + +import io.ebean.Model; + +import javax.persistence.MappedSuperclass; + +@MappedSuperclass +public class BaseModel extends Model { + +// SELF save() { +// super.save(); +// return this; +// } +} diff --git a/src/main/java/org/example/domain/Labs.java b/src/main/java/org/example/domain/Labs.java new file mode 100644 index 0000000..f50b7a0 --- /dev/null +++ b/src/main/java/org/example/domain/Labs.java @@ -0,0 +1,28 @@ +package org.example.domain; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "Labs")//, schema = "dev") +public class Labs extends BaseModel { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "LabID") + private Integer id; + + @Column(name = "Name", length = 50, nullable = false) + private String name; + + @ManyToOne //(optional = true, targetEntity = AddressData.class, fetch = FetchType.EAGER) + @JoinColumn(name = "AddressID", insertable = false) + private AddressData address; + +} diff --git a/src/test/java/org/example/domain/QuotedIdentifiersFkTest.java b/src/test/java/org/example/domain/QuotedIdentifiersFkTest.java new file mode 100644 index 0000000..99dc941 --- /dev/null +++ b/src/test/java/org/example/domain/QuotedIdentifiersFkTest.java @@ -0,0 +1,19 @@ +package org.example.domain; + +import io.ebean.Query; +import org.example.domain.query.QLabs; +import org.junit.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class QuotedIdentifiersFkTest { + + @Test + public void test() { + + final Query query = new QLabs().query(); + query.findList(); + + assertThat(query.getGeneratedSql()).contains("select t0.[LabID], t0.[Name], t0.[AddressID] from [Labs] t0"); + } +} diff --git a/src/test/resources/application-test.yaml b/src/test/resources/application-test.yaml index 49adf3b..04fdf1c 100644 --- a/src/test/resources/application-test.yaml +++ b/src/test/resources/application-test.yaml @@ -1,7 +1,10 @@ ebean: + dbSchema: dev + allQuotedIdentifiers: true + databasePlatformName: sqlserver17 ## only using sql server test: # useDocker: false # shutdown: stop # stop | remove - platform: h2 # h2, postgres, mysql, oracle, sqlserver, sqlite + platform: sqlserver # h2, postgres, mysql, oracle, sqlserver, sqlite ddlMode: dropCreate # none | dropCreate | create | migration | createOnly | migrationDropCreate dbName: myapp