Je crée une application dans Grails à lire d'une base de données et d'écrire dans une autre base de données. J'ai créé des datasources.groovy pour cette exigence et j'ai installé le plugin DataSources. Cependant, je suis bloqué sur la manière d'utiliser cette source de données lors de l'exécution d'une requête SQL (SELECT * de ........ etc .c).
Pour par exemple. Vous trouverez ci-dessous comment je gère une requête dans mon action. J'utilise des requêtes personnalisées et non de la lunette. P>
édité: p> dans ce cas ci-dessus, la source de données n'est pas lue et a une valeur null.
Y a-t-il un exemple de code disponible pour cette exigence. P> suis-ce que je manque quelque chose ici? P> EDIT: P> My DataSources.groovy est comme ci-dessous. p>
6 Réponses :
Je l'ai fait dans le bootstrap du dernier projet que j'ai travaillé. Rappelez-vous simplement que le code Java valide est également valide Groovy (surtout), et vous n'avez pas à faire tout ce que «Grails Way». Il suffit de vous connecter à la base de données "de" de manière à être à l'aise et de stocker des trucs dans les greils DataSource via Grails Domain Object Manipulation. Exemple de code:
Merci Eric. je comprends ton point de vue. Mais l'exigence dit strictement "le faire dans Grails" :(
Les données de données secondaires sont disponibles à l'aide d'une injection de dépendance, mais leurs noms sont basés sur les noms de Datasources.Groovy. Par exemple, si vous avez défini une DataSource nommée 'FOO', vous l'injectionneriez avec Notez que vous devez mettre def DataSource_foo code>:
def datasource_foo code> en tant que champ de classe de classe et non à l'intérieur de votre action (ou de votre méthode). Cela est vrai pour chaque injection de dépendance - si elle est à l'intérieur d'une méthode ou d'une fermeture, il s'agit simplement d'une variable de méthode d'étendue. P> P>
A ton point. Édité mon code selon votre suggestion. S'il vous plaît vérifier mon code modifié. Mon nom de source de données est DS2. Alors maintenant j'ai défini mon DataSource en tant que DEF Datasource_DS2. Aussi essayé d'autres options def DS2. Obtenir toujours la même erreur "doit spécifier une connexion non nulle". Est-ce que je manque quelque chose?
Pensez-vous que vous avez un problème avec la façon dont j'ai écrit ma source de données
@ Burt: Merci pour votre aide. Passé à travers. Cette réponse et votre plugin génial méritent un vote à coup sûr.
J'ai mis à jour mon DataSource à ce qui suit et cela a fonctionné. Je ne suis pas sûr que cependant quel raisonnement est.
Juste pour mettre à jour la réponse à cette question (je viens de recevoir un nouveau projet qui nécessite d'utiliser deux DBS mySQL différents). Je devais passer à GRAVES 2.0 (oui, j'ai été trop paresseux de la mise à niveau de 1.3.7), car elle a construit une prise en charge de plusieurs données de données (pas besoin d'utiliser le plugin).
Grails 2.0 - Plusieurs données de données P>
de l'exemple, vous seulement Besoin de définir les DB dans le fichier datasource.groovy p> puis dans la classe de domaine, spécifiez quelle date de données: p>
Le même code ne fonctionne pas pour moi. (La seule différence est que j'utilise Postgres). J'ai couru DBM-Gorm-Diff pour créer la migration, mais il n'y a aucun code dans la migration pour la construction de la table. Pouvez-vous confirmer que ce code a fonctionné pour vous et vous avez pu générer et exécuter les migrations ???
Il ne fonctionne pas avec GRAVES 2.4.4 avec des critères requis, fonctionne avec les résultats dynamiques. Avec les requêtes de critères, je dois le faire comme domain.LookUp.CreatecreCiteria - même si le domaine est configuré pour utiliser la recherche de la recherche.
Exemple de la façon dont on pourrait utiliser plusieurs données de données dans Grails Services avec SQL.
Indice: Vous pouvez utiliser testservicewithInjection code> ou
testservice code>. Les deux fonctionnent bien. P>
package com.github.biniama
class TestController {
TestService testService
def index() {
Integer result = testService.getData()
render "Returned value is ${result}"
}
}
Je me demande pourquoi personne n'a mentionné 'C3P0: C3P0: 0.9.1.2' Plugin ici.
Ceci est la meilleure pratique pour implémenter plusieurs bases de données dans GRAVES Demande P>
Buildconfig.groovy P> datasource p> ressources.Groovy p>