Невозможно настроить схему для класса домена в Grail & Groovy
Мы создали два разных предметных объекта в Grails и попытались получить доступ из двух разных схем.
Способ 1:
Например:
Student.groovy
class Students {
String id
String name
String address
Static mapping = {
schema: 'student_details'
}
}
Customer.groovy
class Customer {
String firstName
String lastName
String address
Static mapping = {
schema: 'customer_details'
}
}
application.yml
environments:
development:
dataSource:
dbCreate: update
url: jdbc:mysql://localhost:3306/
Если я предоставляю схему по умолчанию в строке подключения URL, то она всегда ссылается на эту настройку по умолчанию, независимо от схемы, определенной в классе домена, и в виде исключения, таблица не найдена. Если я удаляю схему по умолчанию из строки подключения URL, я получаю сообщение об ошибке "База данных не выбрана" в журналах.
Способ 2:
Мы попытались настроить каждую схему с несколькими источниками данных в application.yml следующим образом:
dataSource:
pooled: true
dbCreate: update
url: jdbc:mysql://localhost:3306/sample_grails
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
username: root
password: ''
secondary:
pooled: true
dbCreate: update
url: jdbc:mysql://localhost:3306/grails_mapping
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
username: root
password: ''
Использовал класс домена как Customer.groovy
class Customer {
String firstName
String lastName
String address
Static mapping = {
datasource 'secondary'
}
}
Я получаю ошибку
Caused by: org.grails.datastore.mapping.core.exceptions.ConfigurationException: DataSource not found for name [secondary] in configuration. Please check your multiple data sources configuration and try again.
Мы ссылались на следующие ссылки для доступа к нескольким схемам:
https://objectpartners.com/2016/03/09/using-secondary-datasources-in-grails-3/
Создание класса домена со схемой в Grails
Кто-нибудь может предложить решение этой проблемы?
2 ответа
Ваш метод 2 почти готов, я думаю, что вам не хватает - вам нужно определить "вторичный" в разделе "источники данных" - посмотрите это - http://docs.grails.org/latest/guide/conf.html
В вашем файле application.yml используйте источники данных: ниже источника данных по умолчанию следующим образом:
dataSource:
pooled: true
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
driverClassName: com.mysql.jdbc.Driver
dbCreate: update
url: jdbc:mysql://localhost:3306/default_schema
username: root
password: ''
datasources:
source1:
dialect: org.hibernate.dialect.MySQLInnoDBDialect
driverClassName: com.mysql.jdbc.Driver
username: root
password: ''
url: mysql://localhost:3306/source1
dbCreate: update
Теперь ваш класс Customer должен выглядеть так:
class Customer {
String firstName
String lastName
String address
Static mapping = {
datasource 'source1'
}
}
Для более подробной информации, вы можете увидеть несколько источников данных в Grails, официальный документ