您可以创建外键来使安全用户详细说明用户吗?

时间:2018-09-30 19:19:42

标签: java spring jpa spring-security

我正在尝试创建一个架构,使用户可以对两件事进行投票。用户不要对两件事进行投票,这一点很重要。为此,我正在尝试创建一个架构,在该架构中,投票具有对两个事物和用户的引用。

问题是由于用户不是实体,我无法与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;

1 个答案:

答案 0 :(得分:0)

Spring的User类是一个简单的类,不是一个实体,因为您需要为外键关系建模。通常,您应该定义一个特定的User实体以适合您的应用程序需求,并在实体之间的关系建模中使用该实体。

Spring安全性User在您的应用程序上下文中代表经过身份验证的用户。您应该以某种方式执行Spring服务的必要实现/扩展,以便在Spring需要执行凭据身份验证时需要User实体数据。