diff --git a/templates/server/src/main/resources/archetype-resources/core/pom.xml b/templates/server/src/main/resources/archetype-resources/core/pom.xml index b688a8246..780651f02 100644 --- a/templates/server/src/main/resources/archetype-resources/core/pom.xml +++ b/templates/server/src/main/resources/archetype-resources/core/pom.xml @@ -143,6 +143,10 @@ org.mariadb.jdbc mariadb-java-client 1.5.4 +#elseif ($dbType == 'hana') + com.sap.cloud.db.jdbc + ngdbc + 2.3.48 #elseif ($dbType == 'oracle') com.oracle.jdbc ojdbc8 diff --git a/templates/server/src/main/resources/archetype-resources/core/src/main/resources/application.properties b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/application.properties index 0c33d5e32..cdfd8cc48 100644 --- a/templates/server/src/main/resources/archetype-resources/core/src/main/resources/application.properties +++ b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/application.properties @@ -16,6 +16,10 @@ spring.jpa.hibernate.ddl-auto=validate # https://github.com/spring-projects/spring-boot/blob/d3c34ee3d1bfd3db4a98678c524e145ef9bca51c/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/DatabaseDriver.java #if ($dbType == 'mariadb') spring.jpa.database=mysql +#elseif ($dbType == 'hana') +# Requires spring 5.1 - see https://jira.spring.io/browse/SPR-16460 +#spring.jpa.database=hana +spring.jpa.database=default #else spring.jpa.database=${dbType} #end @@ -39,6 +43,10 @@ spring.datasource.username=${rootArtifactId} # spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect # spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.username=${rootArtifactId} +#elseif ($dbType == 'hana') +# spring.jpa.database-platform=org.hibernate.dialect.HANAColumnStoreDialect +# spring.datasource.driver-class-name=com.sap.db.jdbc.Driver +spring.datasource.username=${rootArtifactId} #elseif ($dbType == 'oracle') # spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect # spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect diff --git a/templates/server/src/main/resources/archetype-resources/core/src/main/resources/config/application.properties b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/config/application.properties index cc6111909..5dc4e65ae 100644 --- a/templates/server/src/main/resources/archetype-resources/core/src/main/resources/config/application.properties +++ b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/config/application.properties @@ -28,6 +28,10 @@ spring.datasource.url=jdbc:mysql://address=(protocol=tcp)(host=localhost)(port=3 #elseif ($dbType == 'mariadb') spring.datasource.password=todo spring.datasource.url=jdbc:mariadb://localhost:3306/db +#elseif ($dbType == 'hana') +spring.datasource.password=todo +# https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/latest/en-US/b250e7fef8614ea0a0973d58eb73bda8.html +spring.datasource.url=jdbc:sap://localhost:39015 #elseif ($dbType == 'oracle') spring.datasource.password=todo spring.datasource.url=jdbc:oracle:thin:@localhost:1521/XE diff --git a/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0001__Create_Sequence.sql b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0001__Create_Sequence.sql new file mode 100644 index 000000000..49953d2cc --- /dev/null +++ b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0001__Create_Sequence.sql @@ -0,0 +1,18 @@ +-- Leave a large ID space reserved for master-data and test-data +CREATE SEQUENCE HIBERNATE_SEQUENCE START WITH 1000000; + +-- hana does not support Dateadd function out of the box so we add it here to be able to use it for master-data SQLs +CREATE FUNCTION DATEADD(IN DATETYPE NVARCHAR(256), IN NUMBER INTEGER, IN TS TIMESTAMP) +RETURNS TSADD TIMESTAMP +AS +BEGIN + IF :DATETYPE = 'DAY' + THEN + TSADD = ADD_DAYS(:TS, :NUMBER); + ELSEIF :DATETYPE = 'HOUR' + THEN + TSADD = ADD_SECONDS(:TS, :NUMBER * 3600); + ELSE + SIGNAL SQL_ERROR_CODE 10000 SET MESSAGE_TEXT = 'Unsupported date type: ' || :DATETYPE; + END IF; +END; \ No newline at end of file diff --git a/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0002__Create_RevInfo.sql b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0002__Create_RevInfo.sql new file mode 100644 index 000000000..38b650b38 --- /dev/null +++ b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0002__Create_RevInfo.sql @@ -0,0 +1,7 @@ +-- *** RevInfo (Commit log for envers audit trail) *** +CREATE COLUMN TABLE RevInfo( + id BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1), + "timestamp" BIGINT NOT NULL, + userLogin VARCHAR(255), + PRIMARY KEY (ID) +); diff --git a/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0003__Create_BinaryObject.sql b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0003__Create_BinaryObject.sql new file mode 100644 index 000000000..6463189dd --- /dev/null +++ b/templates/server/src/main/resources/archetype-resources/core/src/main/resources/db/type/hana/V0003__Create_BinaryObject.sql @@ -0,0 +1,9 @@ +-- *** BinaryObject (BLOBs) *** +CREATE COLUMN TABLE BinaryObject ( + id BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY, + modificationCounter INTEGER NOT NULL, + content BLOB, + filesize BIGINT NOT NULL, + mimeType VARCHAR(255), + CONSTRAINT PK_BinaryObject_id PRIMARY KEY(ID) +);