的Grails docs鼓励使用复合主键,但在this video(26:00 - 29:00)@BurtBeckwith使用复合主键,因为他谈到加入表,而不是使用收藏领域类的映射的性能优势。这就提出了几个问题:我应该在Grails中使用复合主键吗?
- 为什么Grails的文档不鼓励使用复合主键的?
- 为什么Burt甚至使用复合键?我尝试没有一个,一切似乎都很好。我也没有覆盖
hashcode
或equals
。 - Burt在制作视频时使用了Grails 1.3,他对于收藏的表现担心是否仍然有效?我可以通过打开SQL日志来自己测试,但我还没有完成。
是否将UserRole表与隐式创建的连接表保持一致?如果你没有在连接表上使用复合PK,那么该表中的每个条目都会有'id'和'version'。我不认为这是一个巨大的退步,所以我很难理解为什么我们会付出额外的努力来创建一个组合键。比较两种方法生成的SQL时,我也感到困惑(将连接表映射为组合键或将连接表映射为没有组合键)。复合PK方法的SQL似乎更复杂。我可以发布它,如果你想。 – ubiquibacon
这不是很重要,但工作已完成,现在封装在生成域类的脚本中。但重要的是不要太担心默认实现 - 插件和Spring Security不关心用户和角色数据来自哪里,只是在某些时候它的格式正确。随意使用任何你想要的方法,使用自定义的'UserDetailsService'等。 –