这是我的会议
conda update --all
这是我的用户类:
String query = "from Authority";
session = sessionFactory.openSession();
List<Authority> authorities= session.createQuery(query).getResultList();
session.close();
for(Authority a: authorities){
System.out.println(a.getEmail());
}
这是我的权威课程:
@Entity
@Table(name = "users")
public class User {
@Id
@NotBlank
@Size(max = 100)
@Email
@Column
private String email;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user", orphanRemoval = true)
private Set<Authority> authorities = new HashSet<>();
当我想显示我的结果时,我会在每个&#39;中找到第一行。迭代。 你知道为什么会这样吗?
让我们说在我的数据库中有如下行:
@Entity
@Table(name = "authorities")
public class Authority {
@Id
@Column
private String authority;
@ManyToOne
@JoinColumn(name = "email")
private User user;
由于这个&#34;对于&#34;是:
email1@server.com ROLE_USER
email2@server.com ROLE_USER
email3@server.com ROLE_USER
email4@server.com ROLE_USER
答案 0 :(得分:1)
映射中存在几个问题。
第一个问题是authority
表中的authorities
列不是主键。用Id
注释标记它是不正确的,这会使休眠混淆。
第二个(也是主要)问题是,根据您的模型,每个用户可能有多个权限,但您的数据表明每个Authority
可能与许多用户相关。似乎authorities
表模拟User
和Authority
实体之间的多对多关系,而映射试图将其拟合为一对多关系。