Hibernate映射不起作用

时间:2013-10-08 23:37:04

标签: java spring hibernate spring-security hibernate-mapping

尝试实施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教程?

编辑:忘记编写类工作,直到“role”字段为userAccount,并添加userRoles到角色。此处仅显示有错误的代码。惹坏英语。

2 个答案:

答案 0 :(得分:1)

我认为,UserAccount和Role类之间存在矛盾。 UserAccount将user_role_connector表描述为OneToOne,但Role描述了与OneToMany相同的关系。

答案 1 :(得分:1)

错误是由注释放置引起的。在这里我在场上使用它,而在get方法上使用。 必须遵守一条规则!更聪明了! :)