hasmany belongsTo、namedQuery belongsTo和hasmany实例化grails域之间的区别
在grails中,我有两个域类Question和QuestionOption。一个问题有许多选项。每个选项都有一个问题。 我经历了4个不同的场景。 这些场景组合了实例化namedQuery、belongsTo namedQuery、实例化hasMany和belongsTo hasManyhasmany 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
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 | |
+-------------+--------------+------+-----+---------+----------------+