我有两个实体:User和Video。
User有这样的字段:
@Column(name = "favourite")
@ElementCollection(targetClass = Video.class, fetch = FetchType.EAGER)
@CollectionTable(name = "favourite_videos", joinColumns = @JoinColumn(name = "user_id"))
private Set<Video> favourite;user可以将视频添加到他的收藏中。但是,当另一个user尝试添加已由 another user添加的user时,会出现错误:
org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "uk_4ai4388fdjwvno9jj7u9x1h9x".
Key (favourite_id)=(17) already exists.在数据库中,它如下所示:

我的意思是,其他id的用户不能添加id为17和18的视频,或者已经被其他用户添加的视频的任何其他id。问题是如何确保用户可以添加其他用户已经拥有的视频?我希望Video实体不只属于一个用户。
发布于 2018-06-05 03:39:59
在您的表favourite_videos中,主键是favourite_id。因此,在这种情况下,不能有另一个元组具有在前一个元组中使用的favourite_id。(元组是一条记录(一行))
您可以通过将user_id和favourite_id的组合作为主键来创建复合主键来避免此问题。
https://stackoverflow.com/questions/50687404
复制相似问题