如何在grails findAll標籤中使用「SELECT id,name,part,description FROM user」。grails findAll標籤
我試圖
User.findAll("SELECT id, name, part, description FROM user")
而是採用
User.findAll("FROM user")
但顯示錯誤。 任何人都可以建議我的標籤
感謝, SRI ..
如何在grails findAll標籤中使用「SELECT id,name,part,description FROM user」。grails findAll標籤
我試圖
User.findAll("SELECT id, name, part, description FROM user")
而是採用
User.findAll("FROM user")
但顯示錯誤。 任何人都可以建議我的標籤
感謝, SRI ..
finadAll()
返回域對象的集合,所以列舉列可以選擇沒有意義;它理解的查詢不是真正的SQL,基本上只包含WHERE子句。既然你似乎並不想約束的結果集,這可能是你所需要的:
User.findAll()
這將返回所有User
對象的集合。如果你需要約束,語法IST
User.findAll("from User as u where u.id=?", [userId])
甚至更簡單,你可以使用a dynamic finder:
User.findAllById(userId);
如果你想運行報告樣式的查詢像這樣,使用executeQuery方法:
def rows = User.executeQuery("SELECT id, name, part, description FROM User")
返回值將是Object []的列表,其中對象數組中的每個元素是列的類型,即第1個元素將是long,第2個String等。
請注意,由於您指的是Hibernate實體,用戶必須大寫,這不是SQL查詢,而是HQL。
如果您只想查詢某些字段,則可以使用具有投影的條件查詢。
實施例:
def userProperties = User.withCriteria {
projections {
property('id')
property('name')
property('part')
property('description')
}
}
這個查詢將返回字符串數組(或任何數據庫列類型被映射到)對於每個匹配的行,而不是域對象。
它將返回一個ArrayList對象,您只需訪問該對象值即可。例如:
def result = Code.findAll("from Code as c where c.user_code=?",[pass])
result[0].user_code
在哪裏我的代碼類是這樣的:
class Code {
String user_code
boolean flg_active
static constraints = {
user_code nullable:true, blank:true, size:0..Text.MID
flg_active nullable:true, blank:true, default:1
}
}
希望它可以幫助你!
但我們是否有任何顯示「SELECT id,name,part,description FROM user」的標籤。謝謝 – Srinath 2010-06-30 12:37:30
@Srinath:不,沒有那樣的問題。這對於一個適用於域對象的框架來說是沒有意義的。使用我列出的方法獲取User對象然後訪問這些對象的屬性有什麼問題?聽起來你以前只用過PHP,現在正在嘗試在Grails中編寫PHP代碼。這不會讓你走得很遠。 – 2010-06-30 12:54:48
以前我曾在Ruby on Rails工作過。我已經使用了上面提到的標籤findAll。我只想知道Grails中是否有這樣的標籤。感謝您的建議:( – Srinath 2010-06-30 14:48:47