1

我正在使用 JBoss AS 7 和 IDEA 11。当我尝试部署我的应用程序时,我遇到了这个问题:

我的应用中有两个实体:

第一的:

@Entity
@Table(name="users")
public class User extends AbstractEntity {

    private static final long serialVersionUID = -3839809902040717567L;

    @Column(name="email") private String email;
    @Column(name="first_name") private String firstName;
    @Column(name="last_name") private String lastName;
    @Column(name="middle_name") private String middleName;
    @Column(name="password") private String password;
    @Column(name="client_id") private int clientId;
    @Column(name="user_name") private String userName;
    private List<Role> roles;

    public User() {
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getMiddleName() {
        return middleName;
    }

    public void setMiddleName(String middleName) {
        this.middleName = middleName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getClientId() {
        return clientId;
    }

    public void setClientId(int clientId) {
        this.clientId = clientId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    @ManyToMany(cascade = {CascadeType.ALL})
    @JoinTable(name = "users_roles",
            joinColumns = {@JoinColumn(name = "user_id")},
            inverseJoinColumns = @JoinColumn(name = "role_id"))
    public List<Role> getRoles() {
        return roles;
    }

    public void setRoles(List<Role> roles) {
        this.roles = roles;
    }
}

第二:

@Entity
@Table(name="roles")
public class Role extends AbstractEntity {

    private static final long serialVersionUID = -192049947690313026L;

    @Column(name="ad_name") private String  adName;
    @Column(name="description") private String description;
    @Column(name="name") private String name;
    @OneToMany(mappedBy = "roles") private List<RolesPermissions> rolesPermissions;
    @ManyToMany(mappedBy = "roles") List<User> users;


    public String getAdName() {
        return adName;
    }

    public void setAdName(String adName) {
        this.adName = adName;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public List<RolesPermissions> getRolesPermissions() {
        return rolesPermissions;
    }

    public void setRolesPermissions(List<RolesPermissions> rolesPermissions) {
        this.rolesPermissions = rolesPermissions;
    }

}

他们有ManyToMany关系。

部署时我有这个例外:

Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: users, for columns: [org.hibernate.mapping.Column(roles)]
    at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:304)
    at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:288)
    at org.hibernate.mapping.Property.isValid(Property.java:216)

可能是什么原因?

PSAbstractEntitymappedsuperclass并且有带有@Id 注释的字段。

4

1 回答 1

3

您的User实体没有roles注释关系。@ManyToMany注释应该可以解决问题。

正如@Perception 指出的那样,您可能还想在 上分隔连接表roles,例如:

@JoinTable(name="USER_ROLE", joinColumns= @JoinColumn(name="EMP_ID"), inverseJoinColums = @JoinColumn(name="ROLE_ID"))

编辑:仅当您使用现有架构或默认表和列名不适合您时,此注释才相关。如果你让 Hibernate 生成表,你可以放心地省略@JoinTable注解。

于 2012-11-16T15:02:16.120 回答