这是来自Hibernate的官方教程:
还有一个替代<composite-id>声明,该声明允许使用组合键访问旧数据。强烈建议不要将其用于其他任何用途。
<composite-id>
为什么不鼓励使用复合键?我正在考虑使用一个三列表,其中所有列都是外键,并且一起形成一个主键,这在我的模型中是有意义的关系。我不明白为什么这是一个坏主意,特别是我将在它们上使用索引。
有什么选择?创建一个额外的自动生成的列并将其用作主键?无论如何,我仍然需要查询我的3列!
简而言之,为什么这句话是正确的?还有什么更好的选择?
他们由于以下几个原因而劝阻他们:
替代方法是,除其他三列外,还具有单列自动生成的主键。如果要使三列的元组唯一,请使用唯一约束。