我想创建一个类似instagram的应用程序。因此,应该假定用户具有跟随的用户列表以及跟随他的用户列表。
到目前为止,这是我所做的:
@ManyToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(name = "following_followers",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "followedby_id")
)
private List<User> followers;
@ManyToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(name = "following_followers",
joinColumns = @JoinColumn(name = "followedby_id"),
inverseJoinColumns = @JoinColumn(name = "user_id")
)
private List<User> following;
我检查了this个帖子,并按照那边的好答案做了,但是我不确定这项工作是否可以完成。
答案 0 :(得分:0)
由Hibernate管理的many-to-many
关联问题是您无法自己控制联接表following_followers
。例如,您不能使用Hibernate从此类表中删除记录。
在某些情况下,这样的many-to-many
关联可以有效,但是我不确定这是否是您的情况。例如,想象一下如何删除用户的关注者。
您可以尝试其他方法:为以下关系添加单独的实体
@Enity
class Following {
@ManyToOne(fetch = FetchType.LAZY)
User from;
@ManyToOne(fetch = FetchType.LAZY)
User to;
}
您还可以添加一个唯一约束:(from, to)
可能是合适的。
答案 1 :(得分:0)
这是我为您解决的问题的解决方案。 用户类别:
@Entity
public class Followers {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn(name="from_user_fk")
private User from;
@ManyToOne
@JoinColumn(name="to_user_fk")
private User to;
public Followers() {};
public Followers(User from, User to) {
this.from = from;
this.to = to;
}
}
如您所见,用户类别对正在关注的用户和他所关注的用户都有引用。
from Tkinter import *
from PIL import ImageTk, Image
app = Tk()
def do(event):
print("Button Clicked!")
#...
img = ImageTk.PhotoImage(Image.open("Button.gif"))
button = Label(app, image = img)
button.pack()
button.bind('<Button-1>', do)
app.mainloop()
followers类包含两个用户之间的关系,当然,您可能需要向该类添加更多信息,例如“ from”开始跟随“ to”之后。
如果您想吸引用户的关注者/关注者,您只需致电相应的获取者即可。