-1

Nous avons créé deux objets de domaine différents dans Grails et essayé d'accéder à partir de deux schémas différents.Impossible de personnaliser le schéma d'une classe de domaine dans Grail & Groovy

Méthode 1:

Par exemple:

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/ 

Si je fournis un schéma par défaut dans la chaîne de connexion URL, il se référant toujours à cette valeur par défaut quel que soit le schéma défini dans la classe de domaine et exception throw, aucune table trouvée. Si je supprime le schéma par défaut de la chaîne de connexion d'URL, j'obtiens l'erreur "Aucune base de données sélectionnée" dans les journaux.

Méthode 2:

Nous avons essayé de configurer chaque schéma avec plusieurs sources de données option dans application.yml comme suit:

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: '' 

occasion la classe de domaine comme Customer.groovy

class Customer { 
    String firstName 
    String lastName 
    String address 

    Static mapping = { 
     datasource 'secondary' 
    }  
} 

Je reçois une erreur

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. 

Nous avons évoqué les liens suivants pour l'accès à des schémas multiples:

https://objectpartners.com/2016/03/09/using-secondary-datasources-in-grails-3/

Creating a Domain Class with schema in Grails

Quelqu'un peut-il proposer une solution à cela?

Répondre

0

Dans votre fichier application.yml, utilisez sources de données: ci-dessous votre défaut datasource cette façon:

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 

Maintenant, votre classe client devrait ressembler à

class Customer { 
String firstName 
String lastName 
String address 
Static mapping = { 
    datasource 'source1' 
}  
} 

Pour De plus de détails, vous peut voir Multiple Datasources In Grails,official doc