Как настроить application.yml для mysql с помощью Gorm в micronaut - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь сделать приложение 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.

1 Ответ

0 голосов
/ 29 декабря 2018

Я только что сделал эту рабочую CURD с MySQL.Вы можете сослаться на этот пост:

Micronaut MySQL удалить запись org.hibernate.HibernateException: Сессия не найдена для текущей темы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...