(Grails 2.4.2)Grails使用不會產生預期結果的集合查詢域類
我試圖獲取用戶可以訪問的故事列表。因此,故事的所有故事用戶都是故事的所有者,或者用戶處於故事的編輯集合中。我已經嘗試了許多不同的查詢,從createCriteria到編寫HQL。我可以查詢用戶是所有者的所有故事。我可以查詢用戶在編輯器集合中的所有故事,但是當我將查詢與OR..I一起輸入時,得不到正確的結果。
class Story {
String title
Date dateCreated
Date lastUpdated
String description
Boolean isPublic
List storyContent = []
User owner
static belongsTo = [owner: User]
static hasMany = [storyContent : StoryContent, viewers : Viewer, editors : Editor]
...more
class Editor {
User user
static belongsTo = [story: Story]
當我做下面的查詢:
def hql = "from Story as s left outer join s.editors as se where s.owner.username = 'joe'"
def results = Story.executeQuery(hql)
我得到正確的結果:
Result: [[com.storycreate.Story : 3, com.storycreate.Editor : 1], [com.storycreate.Story : 2, null]]
喬的故事2和3,故事的主人現在我查詢所有Joe編輯的故事
def hql = "from Story as s left outer join s.editors as se where se.user.username='joe'"
def results = Story.executeQuery(hql)
,得到正確的結果:(喬既是編輯和老闆的故事3和story4編輯)
Result: [[com.storycreate.Story : 3, com.storycreate.Editor : 1], [com.storycreate.Story : 4, com.storycreate.Editor : 4]]
現在
如果我結合這讓故事的一個列表,其中喬是所有者或編輯:
def hql = "from Story as s left outer join s.editors as se where (s.owner.username='joe' OR se.user.username='joe')"
def results = Story.executeQuery(hql)
我得到不正確的結果(失蹤的故事2,其中喬是老闆)
Result: [[com.storycreate.Story : 3, com.storycreate.Editor : 1], [com.storycreate.Story : 4, com.storycreate.Editor : 4]]
最後,我想查詢給我所有的故事,其中isPublic爲TRUE或登錄用戶的列表是流量編輯或者故事的觀衆。但我似乎缺少對Hibernate如何在這裏工作的一些理解。
如果喬是故事2和3的車主,我覺得這個結果'結果:[com.storycreate.Story:3,COM .storycreate.Editor:1],[com.storycreate.Story:2,null]]'沒有顯示它。 – 2014-10-30 22:58:14
也許我不瞭解結果。我對Grails有點新手。對我來說結果顯示2行。第一個顯示ID 3的Story對象,第二個顯示Story對象ID 2.這是不對的? – jer0dh 2014-10-30 23:18:59