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? –