0
在grails中,我有两个域类Question和QuestionOption.One问题有很多选项。每个选项都有一个问题。 我经历了4种不同的场景。 这些场景结合了实例化命名查询,belongsTo命名查询,实例化hasMany和belongsTo-hasMany。hasmany belongsTo之间的区别,名为Query belongsTo和hasmany实例化grails域
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={}
}
。
Scenario 2:
class Question
{
String quesText
static constraints={}
static namedQueries={
getAllQuestionOptions{question->
return QuestionOption.findAllWhere(question:question)
}
}
}
class QuestionOption
{
String optionText
static constraints={}
static belongsTo=[question:Question]
}
。
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和所有导致用相同的架构
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 | |
+-------------+--------------+------+-----+---------+----------------+
是什么在级联的条款使用这些场景,单向,双向和聚集成分之间的区别? 双向意味着两个实体之间相互了解。单向意味着第一个实体知道第二个实体,但是反向并不是真实的。 为了理解级联,我提到了这个:http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/。 请帮助Grails的效果
Thanks.From以上信息:具有级联策略相似性的场景2和4设置为关系所有者一方的ALL,而来自另一方的NONE设置为ALL,而场景4必须用于双向一对多场景2为单向一对一。场景3为双向一对多,级联策略设为SAVE-UPDATE。双向意味着两个实体彼此知道。单向意味着第一个实体知道第二个但不反向场景1和2(构图)之间的区别是什么?什么是差异b/w级联策略ALL&SAVEUPDATE? –