我无法理解如何代表的一些信息我处理的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,谢谢。 –