【发布时间】:2011-05-14 16:05:12
【问题描述】:
我想切换我的域类以使用可变长度的 UUID 作为其 ID。我不想简单地在 URL 上显示顺序 id 以供人们尝试和弄乱。我编写了 Java UUID 方法的自定义版本以允许可变长度,因此我可以为不会变大的模型设置更短的 id。
我发现这个线程解释了如何修改默认映射,以便我可以更改为“已分配”。 Modify Id generation for a Grails Plugin
同时配置默认 beforeInsert(生成自定义 UUID)并告诉 Grails 我想使用字符串作为 id 而不是整数的最佳方法是什么?
我尝试将 grails.gorm.default.beforeInsert 添加到配置中,但没有奏效。
【问题讨论】:
-
ataylor 在下面的回答是在 grails 中执行此操作的正确方法,但我通常会单独保留数据库生成的 ID,并在需要某种相关 ID 的对象上添加不同的字符串/GUID 字段这可能会暴露给最终用户。这样,您就可以获得 grails/hibernate 和数据库已针对的正常连接/外键行为(并且编写 SQL 更容易),但是当您需要该外部 ID 时,您也可以使用它。
-
这就是我之前所做的,但我读到你会以这种方式丢失默认缓存,因为它是通过 id 完成的。而且由于我尽量不对数据库做任何事情(或者我们有备用键),所以我会试一试。
标签: grails grails-orm