Я пытаюсь сделать приложение CRUD в микроавтобусе и Groovy, я использую hibernate и GORM для проверки, сохранения, удаления и т. Д. С базой данных mySql и @Transactional.
Пока я запускаю приложение, оно работает нормально, но в mysql нет инициализированных таблиц.При отправке запроса Post на сохранение данных в db я получаю следующую ошибку
5: 54: 48.840 [nioEventLoopGroup-1-3] ОШИБКА imhsnetty.RoutingInBoundHandler - Произошла непредвиденная ошибка: не удалось подготовить оператор org.hibernate.exception.SQLGrammarException: не удалось подготовить оператор
Причина: org.h2.jdbc.JdbcSQLException: таблица "STUDENT" не найдена;Оператор SQL: выберите this_.id как y0_ для студента this_, где this_.name =?предел?[42102-196]
Код класса моего домена:
@Entity
class Student {
String name
int age
String gender
String number
static constraints = {
name nullable:false, blank:false,unique:true
age nullable:true,blank:true,size: 1..5
gender nullable:true,blank:true
number size: 11..13,blank:true,unique:true,nullable:true
}
}
Код моего контроллера следующий:
@Transactional(readOnly = true)
@Controller("/")
class StudntController {
@Post("/save")
@Transactional
def save(@Body Object JSON)
{
def result = [:]
Student stu = new Student(name:
JSON?.name,gender:JSON?.gender)
stu.save(flush: true,failOnError: true)
result.put("Student",stu)
result.put("Message", "Student created successfully")
}
}
Вот мойКонфигурации Application.yml:
micronaut:
application:
name: mincronaut-crud
server:
port: 8080
---
hibernate:
cache:
queries: false
use_second_level_cache: false
use_query_cache: false
environments:
development:
dataSource:
dbCreate: update
pooled: true
jmxExport: true
driverClassName: com.mysql.jdbc.Driver
username: admin
password: qwerzxcv123
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
url: jdbc:mysql://192.168.1.121:3306/student
test:
dataSource:
dbCreate: update
url: jdbc:mysql://192.168.1.121:3306/student
production:
dataSource:
dbCreate: update
url: jdbc:mysql://192.168.1.121:3306/student
И, наконец, вот мои конфигурации build.gradle:
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
id "com.github.johnrengelman.shadow" version "4.0.2"
}
apply plugin:"application"
apply plugin:"groovy"
version "0.1"
group "mincronaut.crud"
repositories {
mavenLocal()
mavenCentral()
maven { url "https://jcenter.bintray.com" }
}
ext {
gormVersion = '6.1.9.RELEASE'
h2Version = '1.4.196'
tomcatJdbcVersion = '8.5.28'
}
dependencyManagement {
imports {
mavenBom 'io.micronaut:micronaut-bom:1.0.1'
}
}
dependencies {
compile "io.micronaut:micronaut-http-client"
compile "io.micronaut:micronaut-http-server-netty"
compile "io.micronaut:micronaut-runtime-groovy"
compile "io.micronaut:micronaut-validation"
compile "io.micronaut.configuration:micronaut-hibernate-gorm"
compileOnly "io.micronaut:micronaut-inject-groovy"
compile "org.grails:grails-datastore-gorm-
hibernate5:$gormVersion"
runtime "org.apache.tomcat:tomcat-jdbc:$tomcatJdbcVersion"
runtime 'mysql:mysql-connector-java:6.0.6'
runtime "ch.qos.logback:logback-classic:1.2.3"
runtime "com.h2database:h2:$h2Version"
testCompile "io.micronaut:micronaut-inject-groovy"
testCompile("org.spockframework:spock-core") {
exclude group: "org.codehaus.groovy", module: "groovy-all"
}
testCompile "junit:junit:4.12"
testCompile "io.micronaut:micronaut-inject-java"
testCompile "org.hamcrest:hamcrest-all:1.3"
}
shadowJar {
mergeServiceFiles()
}
run.jvmArgs('-noverify', '-XX:TieredStopAtLevel=1')
mainClassName = "mincronaut.crud.Application"
tasks.withType(GroovyCompile) {
groovyOptions.forkOptions.jvmArgs.add('-
Dgroovy.parameters=true')
}
Почему код после запуска не создает таблицы в базе данных и почему выбираетБаза данных h2, даже если мой URL в приложении настроен для mysql, и я также предоставил плагин mysql в build.gradle.Помогите мне правильно настроить mysql с помощью gorm и groovy в micronaut.