hasmany belongsTo、namedQuery belongsTo和hasmany实例化grails域之间的区别

hasmany belongsTo、namedQuery belongsTo和hasmany实例化grails域之间的区别,grails,gorm,grails-domain-class,Grails,Gorm,Grails Domain Class,在grails中,我有两个域类Question和QuestionOption。一个问题有许多选项。每个选项都有一个问题。 我经历了4个不同的场景。 这些场景组合了实例化namedQuery、belongsTo namedQuery、实例化hasMany和belongsTo hasMany Scenario 1: class Question { String quesText static constraints={} static namedQueries={ getAl

在grails中,我有两个域类Question和QuestionOption。一个问题有许多选项。每个选项都有一个问题。 我经历了4个不同的场景。 这些场景组合了实例化namedQuery、belongsTo namedQuery、实例化hasMany和belongsTo hasMany

Scenario 1:

class Question
{
  String quesText
  static constraints={}
  static namedQueries={
    getAllQuestionOptions{question->
      return QuestionOption.findAllWhere(question:question)
    }
  }
}

class QuestionOption
{
  String optionText
  Question question
  static constraints={}
}

我在mysql中使用了所有这些场景,结果都是相同的模式

mysql> desc question;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| version     | bigint(20)   | NO   |     | NULL    |                |
| ques_text   | varchar(255) | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> desc question_option;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| version     | bigint(20)   | NO   |     | NULL    |                |
| option_text | varchar(255) | NO   |     | NULL    |                |
| question_id | bigint(20)   | NO   | MUL | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
使用这些场景在级联、单向双向和聚合组合方面有什么区别? 双向意味着两个实体都知道对方。单向意味着第一个实体知道第二个实体,但反过来则不正确。 为了理解级联,我引用了以下内容:。
请帮助

属于
在Grails中有许多关联影响与更新/删除实例相关的行为。它对命名查询或一般查询没有影响。

谢谢。根据以上信息:对于关系的拥有方,具有级联策略相似性的场景2和场景4设置为ALL,而对于另一方,则设置为NONE。对于diff,场景4必须用于双向一对多,场景2必须用于单向一对一。场景3是双向一对多,级联策略设置为保存-更新。双向意味着两个实体都知道对方。单向意味着第一个实体知道第二个,但不知道反向。场景1和场景2(组合)之间有什么区别?什么是差异b/w级联策略全部和保存更新?
Scenario 3:
class Question
{
  String quesText
  static constraints={}
  static hasMany=[questionOption:QuestionOption] 
}

class QuestionOption
{
  String optionText
  Question question
  static constraints={}
}
Scenario 4:
class Question
{
  String quesText
  static constraints={}
  static hasMany=[questionOption:QuestionOption] 
}

class QuestionOption
{
  String optionText
  static constraints={}
  static belongsTo=[question:Question]
}
mysql> desc question;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| version     | bigint(20)   | NO   |     | NULL    |                |
| ques_text   | varchar(255) | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> desc question_option;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| version     | bigint(20)   | NO   |     | NULL    |                |
| option_text | varchar(255) | NO   |     | NULL    |                |
| question_id | bigint(20)   | NO   | MUL | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+