我無法理解如何代表的一些信息我處理的Grails應用程序使用Hibernate存儲的地圖。但它確實是更多的SQL問題。在休眠/格姆
我有一些項目在數據庫中存儲,一個JSON文件。每個項目都有一個合法性值的地圖。一個合法的地圖看起來是這樣的:
{
"form2003": "legal",
"form2007": "legal",
"form2008": "banned",
"form2009": "restricted"
"form2013": "legal"
}
或本
{
"form2003": "legal",
"form2004": "legal",
"form2005": "legal",
"form2007": "restricted",
"form2008": "banned",
"form2009": "banned"
}
鍵的範圍從「form2001」到「form2013」,而值可以被「禁止」「限制」或「法律」。缺乏明確的地位暗示了第四種地位。
現在,我代表自己的表/域類型的項目,與並行法律制度的表;項目與合法性有一對一的關係。我有幾個類似於合法性的其他表/域類,每個都與Item有自己的一對一關係。
我現在的合法性域類基本上看起來像這樣
class Legalities {
static belongsTo = [item: Item]
String form2000
String form2001
...
String form2013
static constraints = {
form2000(nullable: true)
...
form2013(nullable: true)
}
}
我需要能夠有效地找到每一個項目,其中某一領域,像form2010,有一個給定值。這似乎應該是簡單的,用HQL這樣的查詢:
"from Item as i where i.legalities.form2010 = \'legal\'"
的事情是,Grails和Hibernate不會讓我參數化查詢的字段名,只在字段值!字段名稱來自表單,所以我最終不得不嘗試自己清理字段名稱並手動組裝查詢字符串。有沒有其他方法可以讓我在這裏構建信息?或者我遇到了Hibernate的缺陷?
這是一個更容易一些比我當前的代碼來了解。不知道標準API,謝謝。 –