En utilisant la propriété « hasOne » statique dans Grails classe contrôleur
-
18-09-2019 - |
Question
Il faut espérer que ce sera facile de répondre. J'ai créé une classe dans Grails appelé joueur qui a cette information:
class Player {
String steamId
String name
String portrait
static hasMany = {playerStatistics:PlayerStatistics}
static hasOne = {playerForumProfile:PlayerForumProfile}
}
Pour plus de précisions, un objet de joueur peut avoir un objet PlayerForumProfile, mais l'objet joueur est toujours créé AVANT l'objet PlayerForumProfile. Mon problème avec l'accès à l'objet playerForumProfile associé à la propriété « hasOne » dans le contrôleur de la classe PlayerForumProfile. J'avais supposé que faire ceci:
def playerForumProfileInstance = new PlayerForumProfile()
def playerInstance = Player.get(params.id)
playerForumProfileInstance = playerInstance.playerForumProfile
CREERAIENT en tirant l'objet PlayerForumProfile associé à l'objet playerInstance dans la variable playerForumProfileInstance, mais lorsque je tente cela, Grails renvoie une erreur me disant qu'il n'y a pas que ces biens playerForumProfile. Est-il possible d'accéder aux propriétés hasOne de l'objet de telle manière ou dois-je faire autre chose?
Edit: J'ai aussi essayé de modifier la classe du joueur comprenait donc une variable appelée playerForumProfile et PlayerForumProfile d'édition il avait une déclaration belongsTo , mais cela a gardé pour résultat un nul exception de pointeur lors de l'exécution de mon application.
Edit: Un peu plus d'info, je créé une nouvelle application Grails à partir de zéro et a créé la relation la façon dont il apparaît dans la documentation Grails et il a couru sans problème, donc je pense qu'il peut être plus facile de commencer une nouvelle application et copiez les fichiers sur.
La solution
Cette réponse est non plus correct pour Grails 2.X et plus, il est vrai en 2009 quand répondu à l'origine.
Il n'y a pas "hasOne" propriété Gorm, il est soit belongsTo:
static belongsTo = [playerForumProfile: PlayerForumProfile]
ou juste une définition typée régulière du nom d'attribut s'il n'y a pas une relation en cascade sous-entendus par belongsTo:
PlayerForumProfile playerForumProfile
Voir la un -à-une documentation GORM pour plus de détails.
Autres conseils
Il est caractéristique hasOne dans GORM: http://grails.org /doc/latest/ref/Domain%20Classes/hasOne.html