Java 春天休息冬眠一天一天
我正在尝试创建一个用户表,该表使用用户名作为外键,具有OneToMany关系,但是ManyTone关系中的username字段每次都显示为Null 关系:Java 春天休息冬眠一天一天,java,mysql,spring,hibernate,Java,Mysql,Spring,Hibernate,我正在尝试创建一个用户表,该表使用用户名作为外键,具有OneToMany关系,但是ManyTone关系中的username字段每次都显示为Null 关系: User: @OneToMany(targetEntity = Authority.class, cascade=CascadeType.ALL, mappedBy="username") private Collection<Authority> authorities Authority: @Co
User:
@OneToMany(targetEntity = Authority.class, cascade=CascadeType.ALL, mappedBy="username")
private Collection<Authority> authorities
Authority:
@Column(nullable = false, name="username")
@JoinColumn(name="user_username")
String username;
您的
JoinColumn
应该是:
@JoinColumn(name="username")
这是因为在
Authority
实体中将字段标识为username
。我认为原因是从多方面到一方面,您必须使用User对象而不是字符串。这是我尝试过的,它是有效的
//使用者
@OneToMany(targetEntity = Authority.class, fetch = FetchType.EAGER, mappedBy = "user")
private Collection<Authority> authorities;
结果:
希望这有帮助 一个简单的答案出现在JPA文档中 使用中
@OneToMany(targetEntity = Authority.class , cascade = CascadeType.ALL)
@JoinColumn(name="username", referencedColumnName="username")
private List<Authority> authorities
据我所知,您希望在表“user”中使用“username”列作为主键,在表“authority”中,您将在表“user”中使用“username”列作为外键?!或者在表“user”中,您的主键是“id”,“username”只是唯一的?!用户中的用户名是唯一的,我在一些文档和其他帖子中看到了这一点,但是我已经习惯于使用字符串了。
@ManyToOne
@JoinColumn(name="username", referencedColumnName = "username")
private User user;
@OneToMany(targetEntity = Authority.class , cascade = CascadeType.ALL)
@JoinColumn(name="username", referencedColumnName="username")
private List<Authority> authorities
@Column(nullable = false)
String username;