嘗試實現Spring Security並且無法映射角色和用戶。 所以我有「用戶」,「角色」和「user_role_connector」數據庫表:休眠映射不起作用
CREATE TABLE users (
user_pk INT NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (user_pk));
CREATE TABLE roles (
role_pk INT NOT NULL AUTO_INCREMENT,
role VARCHAR(20) NOT NULL UNIQUE,
PRIMARY KEY (role_pk));
CREATE TABLE user_role_connector (
urc_pk INT NOT NULL AUTO_INCREMENT,
user_fk INT NOT NULL,
role_fk INT NOT NULL,
FOREIGN KEY (user_fk) REFERENCES users(user_pk),
FOREIGN KEY (role_fk) REFERENCES roles(role_pk),
PRIMARY KEY (urc_pk));
我有實體類的角色和用戶。這兩個工作,直到我加入映射:
@Entity
@Table(name = "users")
public final class UserAccount {
private int user_pk;
...
@OneToOne(cascade=CascadeType.ALL)
@JoinTable(name = "user_role_connector",
joinColumns = {@JoinColumn(name = "user_fk", referencedColumnName = "user_pk")},
inverseJoinColumns = {@JoinColumn(name = "role_fk", referencedColumnName = "role_pk")}
)
private Role role;
@Entity
@Table(name = "roles")
final public class Role {
private int role_pk;
private String role;
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="user_role_connector",
joinColumns = {@JoinColumn(name="role_fk", referencedColumnName="role_pk")},
inverseJoinColumns = {@JoinColumn(name="user_fk", referencedColumnName="user_pk")}
)
private Set<UserAccount> userRoles;
爲什麼不會它映射?出現的錯誤是來自按字母順序排列的第一個控制器的bean創建錯誤,因此它必須是錯誤的映射。
那裏有沒有很好的Spring Security教程?
編輯:忘了寫類的工作,直到「角色」字段userAccount和userRoles添加角色。並且只有錯誤的代碼在這裏displayd。 Sry不好英語。
是的,我們真的不希望看到一個關聯「連接表」的一對一關聯..「User.Roles」應該是多個。這可能是你錯誤的根源。 –
例如,使用連接表執行OneToOne很少見,但並不少見,請參見[這裏](http://en.wikibooks.org/wiki/Java_Persistence/OneToOne#Example_of_a_OneToOne_using_a_JoinTable_database)。但是,這不是這種情況,要麼UserAcount應該是ManyToOne或角色OneToOne – Simon
發現錯誤原因是錯誤的註釋放置。這也可能被打破,但會在稍後出來。 Atm連續的錯誤是在不同的主題。感謝您的幫助! – user1335163