我有一个实体用户,另一个实体书,用户可以拥有很多书,而且这本书可以有很多所有者,所以这是一个很多人的关系。 并使用user_id和book_id
创建了中间表user_book但现在出现了问题,如果用户有2本完全相同的书籍会发生什么,例如他两次购买同一本书。然后主键约束被触发,我不能再坚持用户了。
那我该怎么办呢?用户如何拥有2本相同的书?
答案 0 :(得分:1)
好的,我已经想出了方法,将Set更改为list,这将从中间表中删除主键。
答案 1 :(得分:0)
在这种情况下,您应该向中间表USER_BOOK
添加一个标识字段。这样,每当用户多次使用同一本书时,il将仅使用连接表中的新标识来保留。
答案 2 :(得分:0)
作为一个简单的答案永远不要将您的业务密钥用作身份证! :)
作为示例,如果您将ISBN设置为Book实体的数据库ID,则可能会遇到问题。但是如果你设置了book id,任意id(AutoGenerate,SequenceTable等)都不需要担心在关系中有同一本书;)