Это мой собственный диалект
public class MyOwnSQLDialect extends MySQL5Dialect {
public MyOwnSQLDialect() {
super();
this.registerFunction("group_concat", new SQLFunctionTemplate(StandardBasicTypes.STRING, "group_concat(?1)"));
}
}
вот моя собственность, чтобы использовать его
application.properties
**spring.jpa.properties.hibernate.dialect=demo.orm.config.MyOwnSQLDialect**
Я использую загрузку Spring с данными Spring JPA.
@PropertySource(value = {"classpath:application.properties"})
@ComponentScan(value = {"demo.eaze.*"})
//@EnableTransactionManagement
@EnableJpaRepositories
@EnableJpaAuditing
@EnableWebFlux
public class Application {
public static void main(String[] args) {
try (AnnotationConfigApplicationContext context
= new AnnotationConfigApplicationContext(
Application.class)) {
context.getBean(NettyContext.class).onClose().block();
}
}
@Bean
public NettyContext nettyContext(ApplicationContext context) {
HttpHandler handler = WebHttpHandlerBuilder
.applicationContext(context).build();
ReactorHttpHandlerAdapter adapter
= new ReactorHttpHandlerAdapter(handler);
HttpServer httpServer = HttpServer.create("localhost", 8080);
return httpServer.newHandler(adapter).block();
}
}
Другой файл:
@Configuration
@EnableAutoConfiguration
public class ApplicationConfigs {
@PostConstruct
void init() {
System.out.println("ApplicationConfigs.init");
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
}
Примечание:
Приведенный выше код работает, если я использую JPA / Hibernate, но когда я использую это с загрузочным проектом Spring, он не работает.
Моя основная идея добавить собственный диалект заключается в использовании некоторых функций SQL, таких как
GROUP_CONCAT
в API построителя критериев JPA
build.gradle
dependencies {
compile("org.springframework.boot:spring-boot-starter-web:2.0.2.RELEASE")
compile("org.springframework.boot:spring-boot-starter-webflux:2.0.2.RELEASE")
compile("org.springframework.boot:spring-boot-starter-data-jpa:2.0.2.RELEASE")
compile("org.springframework.boot:spring-boot-starter-logging:2.0.2.RELEASE")
compile("org.springframework.boot:spring-boot-starter-actuator:2.0.2.RELEASE")
compile("org.springframework.boot:spring-boot-devtools:2.0.2.RELEASE")
compile("io.jsonwebtoken:jjwt:0.9.0")
//compile("com.h2database:h2")
// compile("com.fasterxml.jackson.datatype:jjwt:jackson-datatype-jsr310")
compile 'mysql:mysql-connector-java:8.0.11'
// providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
compile 'org.projectlombok:lombok:1.16.20'
}