2011-07-18 58 views
1

我想知道是否可以使用grails爲域類指定一個範圍。是否可以將範圍設置爲域類?

幾句話來解釋我的應用程序目前的工作: - 數據庫訪問是通過使用SQLJ的外部「模塊」完成的。該模塊由我的grails應用程序中的控制器用戶使用。 - 一個用戶請求提交表單的具體信息 - >向外部模塊提交請求 - >從數據庫中提取信息 - >信息加載到grails mem DB(HSQL) - >信息顯示在視圖中。

它在開發環境中工作正常,因爲我是唯一使用該應用程序的人。但我想知道應用程序如何與兩個或更多的用戶行爲。我的意思是,加載到grails內存數據庫的信息是否會在用戶之間共享?以及如何不將一個用戶請求的信息與其他用戶分享?

在此先感謝您對此主題的任何幫助。

問候。

回答

1

數據庫中的所有數據都在grails應用程序的所有用戶中共享。您將不得不編寫自定義查詢來限制返回給特定用戶的數據。基於你的應用程序,可能類似於以下內容。

class DomainClass1 { 
//fields you get from SQLJ go here 
int userId 
} 

將數據導入到您的域類的實例。

def domInstance=new DomainClass1() 
domInstance.loadFromSQLJ() //call the SQLJ module and put it's data in the domain class 
domInstance.userId=5 //assign the user associated with this info 
domInstance.save() 

然後,當你想用用戶id 5

def domInstance2=DomainClass1.findByUserId(5) 
//Do stuff with domInstance2 
+0

大家好。非常感謝你Jared和Victor,我會用你的解決方案。 – kij

1

它將在所有用戶之間共享。

但它取決於你,對於任何其他數據庫,必須有一些標準(db列),通過它你可以只選擇與當前用戶相關的信息。

+0

好的。如果我理解得很好,唯一能做到的就是模擬每個用戶的個人虛擬數據庫,這樣只有他們的數據纔會顯示在應用程序中。有沒有grails配置(例如DataSource.groovy文件)來做到這一點? – kij

1

在我們的項目中顯示用戶信息,我們推翻了域類get()list()考慮到domain aggregate root(一User或任何),並檢查所有指定的查詢。

這使得關閉訪問的情況下,像findBy*(),標準,findWhere()(雖然你也可以覆蓋動態方法)的所有其他手段,或HQL,但無論如何,由80%降低安全審查的量。

突然發現可以在腳手架上使用DomainClass.list()

相關問題