我有两个实体: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
可以将视频添加到他的收藏中。
但是,当另一个video
尝试添加已由另一个 user
添加的org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "uk_4ai4388fdjwvno9jj7u9x1h9x".
Key (favourite_id)=(17) already exists.
时,会发生错误:
Video
在数据库中它看起来像:
我的意思是具有其他ID的用户无法添加ID为17和18的视频,或者已由其他用户添加的任何其他视频ID。问题是如何确保用户可以添加其他用户已有的视频?我希望 DatabaseReference pickupRef = FirebaseDatabase.getInstance().getReference(AppConstants.PICK_UP_REF);
pickupRef.keepSynced(true);
实体不属于一个用户。
答案 0 :(得分:2)
在您的表favourite_videos
中,主键为favourite_id
。所以在这种情况下,不能有另一个元组,它在前一个元组中使用了favourite_id
。 (一个元组是一个记录(一行))
您可以通过将user_id
和favourite_id
组合作为主键来制作复合主键来避免此问题。