我正在尝试创建一个架构,使用户可以对两件事进行投票。用户不要对两件事进行投票,这一点很重要。为此,我正在尝试创建一个架构,在该架构中,投票具有对两个事物和用户的引用。
问题是由于用户不是实体,我无法与Spring Security's User创建休眠的JoinColumn关系。
我可以建立这种关系吗? 有没有让Vote引用用户的更好方法?
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"winnerThingID", "loserThingID", "userID"})})
public class Vote {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer voteID;
@ManyToOne
@JoinColumn(name="winnerThingID",foreignKey=@ForeignKey(name="FK_vote_2"))
private Thing winnerThing;
@ManyToOne
@JoinColumn(name="loserThingID",foreignKey=@ForeignKey(name="FK_vote_3"))
private Thing loserThing;
@ManyToOne
@JoinColumn(name="userID",foreignKey=@ForeignKey(name="FK_vote_4"))
private User user;
答案 0 :(得分:0)
Spring的User
类是一个简单的类,不是一个实体,因为您需要为外键关系建模。通常,您应该定义一个特定的User
实体以适合您的应用程序需求,并在实体之间的关系建模中使用该实体。
Spring安全性User
在您的应用程序上下文中代表经过身份验证的用户。您应该以某种方式执行Spring服务的必要实现/扩展,以便在Spring需要执行凭据身份验证时需要User
实体数据。