From 141a2026deec34a91c403124880483b7023e188e Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 23 Dec 2019 13:15:41 +1300 Subject: [PATCH 1/2] Test case for https://github.com/ebean-orm/ebean/issues/1896 --- pom.xml | 8 +++- .../java/org/example/domain/AddressData.java | 37 +++++++++++++++++++ .../java/org/example/domain/BaseModel.java | 14 +++++++ src/main/java/org/example/domain/Labs.java | 28 ++++++++++++++ src/test/resources/application-test.yaml | 5 ++- 5 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/example/domain/AddressData.java create mode 100644 src/main/java/org/example/domain/BaseModel.java create mode 100644 src/main/java/org/example/domain/Labs.java 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/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 From 78c2f639f758d75fa54e240fd72e914316480ca0 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 23 Dec 2019 13:39:03 +1300 Subject: [PATCH 2/2] Failing test --- .../domain/QuotedIdentifiersFkTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/test/java/org/example/domain/QuotedIdentifiersFkTest.java 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"); + } +}