Grails hasOne and hasMany same domain

2019-02-16 01:40发布

问题:

I have domain like this:

class Team {
 hasOne [leader: Person]
 hasMany [member: Person]
}

class Person {
 belongsTo [team: Team]
}

But when the tables are generated, there is not a column like leader_id in the team table. And thus the leader relation is not persisted.

How should I fix it?

回答1:

I figured that, what I need is

class Team {
 belongsTo [leader: Person]
 hasMany [member: Person]
}

class Person {
 belongsTo [team: Team]
}

so that the Team table can have the desired "leader" reference back to Person.



回答2:

Per the documentation:

Use a hasOne association to store the foreign key reference in child table instead of the parent in a bidirectional one-to-one.

You're child table here is Person and your parent is Team. Grails is working as expected.