我在Grails中有一个域对象,需要为每个实例存储一组键/值对。永远不应该有超过10对。应用程序的用户必须能够编辑这些键/值对。现在我正在考虑将数据存储在HashMap中,以用于域类的每个实例。虽然我认为这会起作用,但这意味着我必须编写大量的自定义代码来编辑,更新和显示这些对象,而不是使用grails generate-all生成的代码。有没有更好的方法来存储和编辑键/值对,还是应该坚持使用HashMap?
答案 0 :(得分:3)
如果您将每个键/值对建模为第一类对象,该怎么办?例如:
class MyKeyValue {
static mapping={
id generator:'assigned'
}
String id
String value //i guess this could be an object of some sort, as long as it is a valid property (like Date)
def getKey = {
return id;
}
}
class User {
//...other properties
//you'd put this property where the hashmap was originally.
List MyKeyValue
}
generate-all命令将为此创建一个相当简单的UI,但它可以使用,并且是自定义的起点。然后,您可以编写自己的约束,并利用GORM的内置验证等。
然而,它有点hacky imo - 并且性能不会很好,但如果你只有少数,我不认为那会很重要。