【发布时间】:2016-05-07 19:24:38
【问题描述】:
到目前为止,在我的应用程序中,我只有一个主用户。但是当我尝试在我的视图层上显示它时,它会乘以它拥有的角色数量。
我的用户实体定义是:
public class User {
@NotEmpty
@Column(name="sso_id", unique=true, nullable=false)
private String ssoId;
@NotEmpty
@Column(name="password", nullable=false)
private String password;
@NotEmpty
@Column(name="first_name", nullable=false)
private String firstName;
@NotEmpty
@Column(name="last_name", nullable=false)
private String lastName;
@Column(name="email", nullable=false)
private String email;
@NotEmpty
@Column(name="state", nullable=false)
private String state=State.ACTIVE.getState();
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "user_user_profile",
joinColumns = { @JoinColumn(name = "id_user", referencedColumnName="id") },
inverseJoinColumns = { @JoinColumn(name = "id_profile", referencedColumnName="id") })
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Set<UserProfile> userProfiles = new HashSet<UserProfile>();
// getters and setters
UserProfile 实体定义为:
public class UserProfile {
@Column(name="type", length=15, unique=true, nullable=false)
private String type = UserProfileType.USER.getUserProfileType();
// getters and setters
UserProfileType 枚举定义为:
public enum UserProfileType {
USER("USER"),
DBA("DBA"),
ADMIN("ADMIN");
String type;
private UserProfileType(String userProfileType) {
this.type = userProfileType;
}
public String getUserProfileType() {
return type;
}
在我的数据库中,表 user 只有一个条目(用于主用户),表 user_profile 有 3 个条目(ADMIN、USER 和 DBA),而链接两者的表 user_user_profile 有 3 个条目,例如:
id_user(master) id_profile(admin)
id_user(master) id_profile(dba)
id_user(master) id_profile(user)
我确实认为问题出在用户实体上,更准确地说是在以下摘录中:
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "user_user_profile",
joinColumns = { @JoinColumn(name = "id_user", referencedColumnName="id") },
inverseJoinColumns = { @JoinColumn(name = "id_profile", referencedColumnName="id") })
@Cascade(org.hibernate.annotations.CascadeType.ALL)
private Set<UserProfile> userProfiles = new HashSet<UserProfile>();
但我看不出这里有什么问题。有人可以帮我吗?
【问题讨论】:
标签: spring hibernate annotations