32 changed files with 625 additions and 25 deletions
@ -0,0 +1,49 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2020 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
package org.springframework.data.jdbc.testing; |
||||||
|
|
||||||
|
import javax.sql.DataSource; |
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.context.annotation.Profile; |
||||||
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; |
||||||
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; |
||||||
|
|
||||||
|
/** |
||||||
|
* {@link DataSource} setup for H2. |
||||||
|
* |
||||||
|
* @author Mark Paluch |
||||||
|
*/ |
||||||
|
@Configuration |
||||||
|
@Profile({ "h2" }) |
||||||
|
class H2DataSourceConfiguration { |
||||||
|
|
||||||
|
@Autowired Class<?> context; |
||||||
|
|
||||||
|
@Bean |
||||||
|
DataSource dataSource() { |
||||||
|
|
||||||
|
return new EmbeddedDatabaseBuilder() //
|
||||||
|
.generateUniqueName(true) //
|
||||||
|
.setType(EmbeddedDatabaseType.H2) //
|
||||||
|
.setScriptEncoding("UTF-8") //
|
||||||
|
.ignoreFailedDrops(true) //
|
||||||
|
.addScript(TestUtils.createScriptName(context, "h2")) //
|
||||||
|
.build(); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,305 @@ |
|||||||
|
CREATE TABLE LEGO_SET |
||||||
|
( |
||||||
|
"id1" SERIAL PRIMARY KEY, |
||||||
|
NAME VARCHAR(30) |
||||||
|
); |
||||||
|
CREATE TABLE MANUAL |
||||||
|
( |
||||||
|
"id2" SERIAL PRIMARY KEY, |
||||||
|
LEGO_SET BIGINT, |
||||||
|
"alternative" BIGINT, |
||||||
|
CONTENT VARCHAR(2000) |
||||||
|
); |
||||||
|
|
||||||
|
ALTER TABLE MANUAL |
||||||
|
ADD FOREIGN KEY (LEGO_SET) |
||||||
|
REFERENCES LEGO_SET ("id1"); |
||||||
|
|
||||||
|
CREATE TABLE ONE_TO_ONE_PARENT |
||||||
|
( |
||||||
|
"id3" SERIAL PRIMARY KEY, |
||||||
|
content VARCHAR(30) |
||||||
|
); |
||||||
|
CREATE TABLE Child_No_Id |
||||||
|
( |
||||||
|
ONE_TO_ONE_PARENT INTEGER PRIMARY KEY, |
||||||
|
content VARCHAR(30) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE LIST_PARENT |
||||||
|
( |
||||||
|
"id4" SERIAL PRIMARY KEY, |
||||||
|
NAME VARCHAR(100) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE element_no_id |
||||||
|
( |
||||||
|
content VARCHAR(100), |
||||||
|
LIST_PARENT_key BIGINT, |
||||||
|
LIST_PARENT INTEGER |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE "ARRAY_OWNER" |
||||||
|
( |
||||||
|
ID SERIAL PRIMARY KEY, |
||||||
|
DIGITS ARRAY[10] NOT NULL, |
||||||
|
MULTIDIMENSIONAL ARRAY[10] NULL |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE BYTE_ARRAY_OWNER |
||||||
|
( |
||||||
|
ID SERIAL PRIMARY KEY, |
||||||
|
BINARY_DATA BYTEA NOT NULL |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE CHAIN4 |
||||||
|
( |
||||||
|
FOUR SERIAL PRIMARY KEY, |
||||||
|
FOUR_VALUE VARCHAR(20) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE CHAIN3 |
||||||
|
( |
||||||
|
THREE SERIAL PRIMARY KEY, |
||||||
|
THREE_VALUE VARCHAR(20), |
||||||
|
CHAIN4 BIGINT, |
||||||
|
FOREIGN KEY (CHAIN4) REFERENCES CHAIN4 (FOUR) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE CHAIN2 |
||||||
|
( |
||||||
|
TWO SERIAL PRIMARY KEY, |
||||||
|
TWO_VALUE VARCHAR(20), |
||||||
|
CHAIN3 BIGINT, |
||||||
|
FOREIGN KEY (CHAIN3) REFERENCES CHAIN3 (THREE) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE CHAIN1 |
||||||
|
( |
||||||
|
ONE SERIAL PRIMARY KEY, |
||||||
|
ONE_VALUE VARCHAR(20), |
||||||
|
CHAIN2 BIGINT, |
||||||
|
FOREIGN KEY (CHAIN2) REFERENCES CHAIN2 (TWO) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE CHAIN0 |
||||||
|
( |
||||||
|
ZERO SERIAL PRIMARY KEY, |
||||||
|
ZERO_VALUE VARCHAR(20), |
||||||
|
CHAIN1 BIGINT, |
||||||
|
FOREIGN KEY (CHAIN1) REFERENCES CHAIN1 (ONE) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_CHAIN4 |
||||||
|
( |
||||||
|
FOUR SERIAL PRIMARY KEY, |
||||||
|
FOUR_VALUE VARCHAR(20) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_CHAIN3 |
||||||
|
( |
||||||
|
THREE_VALUE VARCHAR(20), |
||||||
|
NO_ID_CHAIN4 BIGINT, |
||||||
|
FOREIGN KEY (NO_ID_CHAIN4) REFERENCES NO_ID_CHAIN4 (FOUR) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_CHAIN2 |
||||||
|
( |
||||||
|
TWO_VALUE VARCHAR(20), |
||||||
|
NO_ID_CHAIN4 BIGINT, |
||||||
|
FOREIGN KEY (NO_ID_CHAIN4) REFERENCES NO_ID_CHAIN4 (FOUR) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_CHAIN1 |
||||||
|
( |
||||||
|
ONE_VALUE VARCHAR(20), |
||||||
|
NO_ID_CHAIN4 BIGINT, |
||||||
|
FOREIGN KEY (NO_ID_CHAIN4) REFERENCES NO_ID_CHAIN4 (FOUR) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_CHAIN0 |
||||||
|
( |
||||||
|
ZERO_VALUE VARCHAR(20), |
||||||
|
NO_ID_CHAIN4 BIGINT, |
||||||
|
FOREIGN KEY (NO_ID_CHAIN4) REFERENCES NO_ID_CHAIN4 (FOUR) |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE NO_ID_LIST_CHAIN4 |
||||||
|
( |
||||||
|
FOUR SERIAL PRIMARY KEY, |
||||||
|
FOUR_VALUE VARCHAR(20) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_LIST_CHAIN3 |
||||||
|
( |
||||||
|
THREE_VALUE VARCHAR(20), |
||||||
|
NO_ID_LIST_CHAIN4 BIGINT, |
||||||
|
NO_ID_LIST_CHAIN4_KEY BIGINT, |
||||||
|
PRIMARY KEY (NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY), |
||||||
|
FOREIGN KEY (NO_ID_LIST_CHAIN4) REFERENCES NO_ID_LIST_CHAIN4 (FOUR) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_LIST_CHAIN2 |
||||||
|
( |
||||||
|
TWO_VALUE VARCHAR(20), |
||||||
|
NO_ID_LIST_CHAIN4 BIGINT, |
||||||
|
NO_ID_LIST_CHAIN4_KEY BIGINT, |
||||||
|
NO_ID_LIST_CHAIN3_KEY BIGINT, |
||||||
|
PRIMARY KEY (NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY, |
||||||
|
NO_ID_LIST_CHAIN3_KEY), |
||||||
|
FOREIGN KEY ( |
||||||
|
NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY |
||||||
|
) REFERENCES NO_ID_LIST_CHAIN3 ( |
||||||
|
NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_LIST_CHAIN1 |
||||||
|
( |
||||||
|
ONE_VALUE VARCHAR(20), |
||||||
|
NO_ID_LIST_CHAIN4 BIGINT, |
||||||
|
NO_ID_LIST_CHAIN4_KEY BIGINT, |
||||||
|
NO_ID_LIST_CHAIN3_KEY BIGINT, |
||||||
|
NO_ID_LIST_CHAIN2_KEY BIGINT, |
||||||
|
PRIMARY KEY (NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY, |
||||||
|
NO_ID_LIST_CHAIN3_KEY, |
||||||
|
NO_ID_LIST_CHAIN2_KEY), |
||||||
|
FOREIGN KEY ( |
||||||
|
NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY, |
||||||
|
NO_ID_LIST_CHAIN3_KEY |
||||||
|
) REFERENCES NO_ID_LIST_CHAIN2 ( |
||||||
|
NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY, |
||||||
|
NO_ID_LIST_CHAIN3_KEY |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_LIST_CHAIN0 |
||||||
|
( |
||||||
|
ZERO_VALUE VARCHAR(20), |
||||||
|
NO_ID_LIST_CHAIN4 BIGINT, |
||||||
|
NO_ID_LIST_CHAIN4_KEY BIGINT, |
||||||
|
NO_ID_LIST_CHAIN3_KEY BIGINT, |
||||||
|
NO_ID_LIST_CHAIN2_KEY BIGINT, |
||||||
|
NO_ID_LIST_CHAIN1_KEY BIGINT, |
||||||
|
PRIMARY KEY (NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY, |
||||||
|
NO_ID_LIST_CHAIN3_KEY, |
||||||
|
NO_ID_LIST_CHAIN2_KEY, |
||||||
|
NO_ID_LIST_CHAIN1_KEY), |
||||||
|
FOREIGN KEY ( |
||||||
|
NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY, |
||||||
|
NO_ID_LIST_CHAIN3_KEY, |
||||||
|
NO_ID_LIST_CHAIN2_KEY |
||||||
|
) REFERENCES NO_ID_LIST_CHAIN1 ( |
||||||
|
NO_ID_LIST_CHAIN4, |
||||||
|
NO_ID_LIST_CHAIN4_KEY, |
||||||
|
NO_ID_LIST_CHAIN3_KEY, |
||||||
|
NO_ID_LIST_CHAIN2_KEY |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE NO_ID_MAP_CHAIN4 |
||||||
|
( |
||||||
|
FOUR SERIAL PRIMARY KEY, |
||||||
|
FOUR_VALUE VARCHAR(20) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_MAP_CHAIN3 |
||||||
|
( |
||||||
|
THREE_VALUE VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN4 BIGINT, |
||||||
|
NO_ID_MAP_CHAIN4_KEY VARCHAR(20), |
||||||
|
PRIMARY KEY (NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY), |
||||||
|
FOREIGN KEY (NO_ID_MAP_CHAIN4) REFERENCES NO_ID_MAP_CHAIN4 (FOUR) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_MAP_CHAIN2 |
||||||
|
( |
||||||
|
TWO_VALUE VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN4 BIGINT, |
||||||
|
NO_ID_MAP_CHAIN4_KEY VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN3_KEY VARCHAR(20), |
||||||
|
PRIMARY KEY (NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY, |
||||||
|
NO_ID_MAP_CHAIN3_KEY), |
||||||
|
FOREIGN KEY ( |
||||||
|
NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY |
||||||
|
) REFERENCES NO_ID_MAP_CHAIN3 ( |
||||||
|
NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_MAP_CHAIN1 |
||||||
|
( |
||||||
|
ONE_VALUE VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN4 BIGINT, |
||||||
|
NO_ID_MAP_CHAIN4_KEY VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN3_KEY VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN2_KEY VARCHAR(20), |
||||||
|
PRIMARY KEY (NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY, |
||||||
|
NO_ID_MAP_CHAIN3_KEY, |
||||||
|
NO_ID_MAP_CHAIN2_KEY), |
||||||
|
FOREIGN KEY ( |
||||||
|
NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY, |
||||||
|
NO_ID_MAP_CHAIN3_KEY |
||||||
|
) REFERENCES NO_ID_MAP_CHAIN2 ( |
||||||
|
NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY, |
||||||
|
NO_ID_MAP_CHAIN3_KEY |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE NO_ID_MAP_CHAIN0 |
||||||
|
( |
||||||
|
ZERO_VALUE VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN4 BIGINT, |
||||||
|
NO_ID_MAP_CHAIN4_KEY VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN3_KEY VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN2_KEY VARCHAR(20), |
||||||
|
NO_ID_MAP_CHAIN1_KEY VARCHAR(20), |
||||||
|
PRIMARY KEY (NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY, |
||||||
|
NO_ID_MAP_CHAIN3_KEY, |
||||||
|
NO_ID_MAP_CHAIN2_KEY, |
||||||
|
NO_ID_MAP_CHAIN1_KEY), |
||||||
|
FOREIGN KEY ( |
||||||
|
NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY, |
||||||
|
NO_ID_MAP_CHAIN3_KEY, |
||||||
|
NO_ID_MAP_CHAIN2_KEY |
||||||
|
) REFERENCES NO_ID_MAP_CHAIN1 ( |
||||||
|
NO_ID_MAP_CHAIN4, |
||||||
|
NO_ID_MAP_CHAIN4_KEY, |
||||||
|
NO_ID_MAP_CHAIN3_KEY, |
||||||
|
NO_ID_MAP_CHAIN2_KEY |
||||||
|
) |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE "VERSIONED_AGGREGATE" |
||||||
|
( |
||||||
|
ID SERIAL PRIMARY KEY, |
||||||
|
VERSION BIGINT |
||||||
|
); |
||||||
|
|
||||||
|
CREATE TABLE WITH_READ_ONLY |
||||||
|
( |
||||||
|
ID SERIAL PRIMARY KEY, |
||||||
|
NAME VARCHAR(200), |
||||||
|
READ_ONLY VARCHAR(200) DEFAULT 'from-db' |
||||||
|
); |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE Dummy_Entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY) |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, NAME VARCHAR(100)) |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(100)) |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(100)) |
||||||
@ -0,0 +1,2 @@ |
|||||||
|
DROP TABLE IF EXISTS dummy_entity; |
||||||
|
CREATE TABLE dummy_entity ( id SERIAL PRIMARY KEY, NAME VARCHAR(100)); |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE ENTITY_WITH_STRINGY_BIG_DECIMAL ( id IDENTITY PRIMARY KEY, Stringy_number DECIMAL(20,10)) |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, PREFIX_ATTR1 BIGINT, PREFIX_ATTR2 VARCHAR(100)) |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, TEST VARCHAR(100), PREFIX2_ATTR BIGINT, PREFIX_TEST VARCHAR(100), PREFIX_PREFIX2_ATTR BIGINT) |
||||||
@ -0,0 +1,2 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, TEST VARCHAR(100)) |
||||||
|
CREATE TABLE dummy_entity2 ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, TEST VARCHAR(100), PREFIX_ATTR BIGINT) |
||||||
@ -0,0 +1,13 @@ |
|||||||
|
CREATE TABLE dummy_entity |
||||||
|
( |
||||||
|
id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, |
||||||
|
TEST VARCHAR(100), |
||||||
|
PREFIX_TEST VARCHAR(100) |
||||||
|
); |
||||||
|
CREATE TABLE dummy_entity2 |
||||||
|
( |
||||||
|
id BIGINT, |
||||||
|
ORDER_KEY BIGINT, |
||||||
|
TEST VARCHAR(100), |
||||||
|
PRIMARY KEY (id, ORDER_KEY) |
||||||
|
) |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
CREATE TABLE dummy_entity |
||||||
|
( |
||||||
|
ID BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, |
||||||
|
TEST VARCHAR(100), |
||||||
|
PREFIX_TEST VARCHAR(100) |
||||||
|
); |
||||||
|
CREATE TABLE dummy_entity2 |
||||||
|
( |
||||||
|
ID BIGINT, |
||||||
|
TEST VARCHAR(100) |
||||||
|
) |
||||||
@ -0,0 +1,5 @@ |
|||||||
|
-- noinspection SqlNoDataSourceInspectionForFile |
||||||
|
|
||||||
|
CREATE TABLE ReadOnlyIdEntity (ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) PRIMARY KEY, NAME VARCHAR(100)); |
||||||
|
CREATE TABLE PrimitiveIdEntity (ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 1) PRIMARY KEY, NAME VARCHAR(100)); |
||||||
|
CREATE TABLE ImmutableWithManualIdentity (ID BIGINT PRIMARY KEY, NAME VARCHAR(100)); |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id_Prop BIGINT PRIMARY KEY, NAME VARCHAR(100)) |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
CREATE TABLE dummy_entity |
||||||
|
( |
||||||
|
id_Prop BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, |
||||||
|
NAME VARCHAR(100), |
||||||
|
POINT_IN_TIME TIMESTAMP |
||||||
|
); |
||||||
@ -0,0 +1,2 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, NAME VARCHAR(100), DELETED CHAR(1), log BIGINT); |
||||||
|
CREATE TABLE log ( id BIGINT, TEXT VARCHAR(100)); |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE ENTITY_WITH_COLUMNS_REQUIRING_CONVERSIONS ( id_Timestamp DATETIME PRIMARY KEY, bool boolean, SOME_ENUM VARCHAR(100), big_Decimal DECIMAL(1025), big_Integer DECIMAL(20), date DATETIME, local_Date_Time DATETIME, zoned_Date_Time VARCHAR(30)) |
||||||
@ -0,0 +1 @@ |
|||||||
|
CREATE TABLE car ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, model VARCHAR(100)); |
||||||
@ -0,0 +1,3 @@ |
|||||||
|
CREATE TABLE person ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, name VARCHAR(100)); |
||||||
|
CREATE TABLE address ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, street VARCHAR(100), person_id BIGINT); |
||||||
|
ALTER TABLE address ADD FOREIGN KEY (person_id) REFERENCES person(id); |
||||||
@ -0,0 +1,2 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, NAME VARCHAR(100)); |
||||||
|
CREATE TABLE element (id BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY, content VARCHAR(100), dummy_entity BIGINT); |
||||||
@ -0,0 +1,2 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, NAME VARCHAR(100)); |
||||||
|
CREATE TABLE element (id BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY, content VARCHAR(100), Dummy_Entity_key BIGINT, dummy_entity BIGINT); |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
CREATE TABLE dummy_entity ( id BIGINT GENERATED BY DEFAULT AS IDENTITY ( START WITH 1 ) PRIMARY KEY, NAME VARCHAR(100)); |
||||||
|
CREATE TABLE element (id BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1) PRIMARY KEY, content VARCHAR(100), Dummy_Entity_key VARCHAR(100), dummy_entity BIGINT); |
||||||
|
|
||||||
|
ALTER TABLE ELEMENT |
||||||
|
ADD FOREIGN KEY (dummy_entity) |
||||||
|
REFERENCES dummy_entity(id); |
||||||
@ -0,0 +1,133 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2019-2020 the original author or authors. |
||||||
|
* |
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
* you may not use this file except in compliance with the License. |
||||||
|
* You may obtain a copy of the License at |
||||||
|
* |
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* |
||||||
|
* Unless required by applicable law or agreed to in writing, software |
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
* See the License for the specific language governing permissions and |
||||||
|
* limitations under the License. |
||||||
|
*/ |
||||||
|
package org.springframework.data.relational.core.dialect; |
||||||
|
|
||||||
|
import lombok.RequiredArgsConstructor; |
||||||
|
|
||||||
|
import org.springframework.data.relational.core.sql.IdentifierProcessing; |
||||||
|
import org.springframework.data.relational.core.sql.IdentifierProcessing.LetterCasing; |
||||||
|
import org.springframework.data.relational.core.sql.IdentifierProcessing.Quoting; |
||||||
|
import org.springframework.util.Assert; |
||||||
|
import org.springframework.util.ClassUtils; |
||||||
|
|
||||||
|
/** |
||||||
|
* An SQL dialect for H2. |
||||||
|
* |
||||||
|
* @author Mark Paluch |
||||||
|
* @since 2.0 |
||||||
|
*/ |
||||||
|
public class H2Dialect extends AbstractDialect { |
||||||
|
|
||||||
|
/** |
||||||
|
* Singleton instance. |
||||||
|
*/ |
||||||
|
public static final H2Dialect INSTANCE = new H2Dialect(); |
||||||
|
|
||||||
|
protected H2Dialect() {} |
||||||
|
|
||||||
|
private static final LimitClause LIMIT_CLAUSE = new LimitClause() { |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.LimitClause#getLimit(long) |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String getLimit(long limit) { |
||||||
|
return "LIMIT " + limit; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.LimitClause#getOffset(long) |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String getOffset(long offset) { |
||||||
|
return "OFFSET " + offset; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.LimitClause#getClause(long, long) |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public String getLimitOffset(long limit, long offset) { |
||||||
|
return String.format("LIMIT %d OFFSET %d", limit, offset); |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.LimitClause#getClausePosition() |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public Position getClausePosition() { |
||||||
|
return Position.AFTER_ORDER_BY; |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
private final H2ArrayColumns ARRAY_COLUMNS = new H2ArrayColumns(); |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.Dialect#limit() |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public LimitClause limit() { |
||||||
|
return LIMIT_CLAUSE; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.Dialect#getArraySupport() |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public ArrayColumns getArraySupport() { |
||||||
|
return ARRAY_COLUMNS; |
||||||
|
} |
||||||
|
|
||||||
|
@RequiredArgsConstructor |
||||||
|
static class H2ArrayColumns implements ArrayColumns { |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.ArrayColumns#isSupported() |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public boolean isSupported() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.ArrayColumns#getArrayType(java.lang.Class) |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public Class<?> getArrayType(Class<?> userType) { |
||||||
|
|
||||||
|
Assert.notNull(userType, "Array component type must not be null"); |
||||||
|
|
||||||
|
return ClassUtils.resolvePrimitiveIfNecessary(userType); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* (non-Javadoc) |
||||||
|
* @see org.springframework.data.relational.core.dialect.Dialect#getIdentifierProcessing() |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public IdentifierProcessing getIdentifierProcessing() { |
||||||
|
return IdentifierProcessing.create(Quoting.ANSI, LetterCasing.UPPER_CASE); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue