Grails 将用户定义属性添加到域类

Grails 将用户定义属性添加到域类,grails,grails-domain-class,Grails,Grails Domain Class,我需要允许用户在一个系统实体中定义一些自定义字段。您是否有任何建议/模式/插件可以帮助我将此功能添加到我的应用程序中 谢谢 Meni听起来好像您希望您的应用程序是一个用户可以随意修改的无限可调扳手。这公平吗 我认为这既不可能也不可取。考虑一下在Grails中将属性添加到现有域对象时会发生什么。属性被添加到ORM映射中,这意味着必须修改表。用户界面增加了另一个文本框用于数据输入;列表页的表中添加了另一列 添加属性时会发生很多事情。您将如何管理同时修改应用程序的多个用户?当一个用户在修改表,而另一个

我需要允许用户在一个系统实体中定义一些自定义字段。您是否有任何建议/模式/插件可以帮助我将此功能添加到我的应用程序中

谢谢


Meni

听起来好像您希望您的应用程序是一个用户可以随意修改的无限可调扳手。这公平吗

我认为这既不可能也不可取。考虑一下在Grails中将属性添加到现有域对象时会发生什么。属性被添加到ORM映射中,这意味着必须修改表。用户界面增加了另一个文本框用于数据输入;列表页的表中添加了另一列

添加属性时会发生很多事情。您将如何管理同时修改应用程序的多个用户?当一个用户在修改表,而另一个用户在访问旧版本时会发生什么情况


你要求太多了。我认为这不是一个合理的要求。Grails的最佳选择是快速开发基于web的CRUD应用程序。我认为这不包括用户在运行时进行的修改。

您可以向域类添加映射属性并在其中存储任意数据。但这是相当有限的。它将生成一个包含varchar(255)键和值的表,因此您需要自己管理任何类型转换,例如

class Thing {
   String name
   Map extraProperties = [:]
}

int age = 123
def thing = new Thing(name: 'whatever')
thing.extraProperties.age = age.toString()
thing.save()

...

def thing = Thing.get(thingId)
int age = thing.extraProperties.age.toInteger()

有关简要的在线文档,请参见“5.2.4集合、列表和映射”部分。

那里没有类型安全或抽象。因此,如果我想动态执行,我可能需要额外的映射来存储类型,或者在映射中放置一个具有描述类型的属性的类:class extrop{int typeCode String Value}@在需求中没有提到duffymo类型的安全性和抽象性。作为Burt方法的替代方法,但同样,请参见@Matt Lachman-在“需求”中几乎没有提到宝贵的内容。这只是一个关注点,仅此而已。许多系统中都存在并实现了此需求。所以我不认为我要求太多。也许实现是复杂的,但它是可行的——我几年前在JEE应用程序中实现了它,我很高兴能从在Grails中实现它的开发人员那里得到帮助和想法。同意海报,但在技术上是可行的Grails是错误的技术。你可以在汇编中编写stackoverflow.com,但考虑到所有额外的工作,这不是一个好的diea。这是如何计划通过对2.5年前的答案发表无用的评论来建立你微不足道的代表Thermech的?让我们看看您是否提供了更好的功能。自定义字段不是无限可调扳手,也不是不合理的要求。例如,许多orm都有它们。