从其基本类型创建超级对象 (Grails)

Creating a Super Object from its base type (Grails)

我有 2 个域 类。其中一个是用户,另一个是超级用户。超级用户包含一些额外的字段,SuperUser 继承自User。 (另请注意:用户已将 inheritTableHeirachy 设置为 false 的映射)。

如何将现有的用户实例对象转换为超级用户?有没有办法可以在 SuperUser 构造函数中传递它?

我想保留对原始用户的引用,我想将 SuperUser 的额外属性添加到 SuperUser table。

有办法通过属性。您可能想在之后根除 ID 或之前已经过滤掉您不需要的东西(这是一张地图)。例如

new SuperUser(theUser.properties)

因为这只有 "copies" 相同的 属性 名称,所以没有防止设置 "stupid" 的东西。两个对象不必具有相同的 class 层次结构等。它只是为带有地图的地图调用 c'tor。

一种更结构化的方法是为这种情况引入适配器。