【问题标题】:@OneToMany or @ManyToMany targeting an unmapped class@OneToMany 或 @ManyToMany 针对未映射的类
【发布时间】:2018-12-07 11:35:03
【问题描述】:

我正在研究 Spring boot Security,当我想运行它时,我发现了一个错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: xxxxxxxxxx [java.security.Permission]

我不知道如何解决这个问题,而且我是 Spring 新手。 感谢您的阅读和花费时间。

@Entity
@Table(name = "ROLES")
public class Role implements Serializable, GrantedAuthority {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;    

    @Column(unique = true)
    private String name;

    @ManyToMany
    @JoinTable(
            name = "role_permissions",
            joinColumns= {@JoinColumn(name="role_id", referencedColumnName="id")},
            inverseJoinColumns= {@JoinColumn(name="permission_id", referencedColumnName="id")}
            )

    @LazyCollection(LazyCollectionOption.FALSE)
    private Set <Permission> permission;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Set<Permission> getPermission() {
        return permission;
    }

    public void setPermission(Set<Permission> permission) {
        this.permission = permission;
    }

    public Role() {}

    public Role(String name) {
        this.name = name;
    }

    @Override
    public String getAuthority() {
        // TODO Auto-generated method stub
        return getName();
    }

    @Override
    public String toString() {
        return "Role [id=" + id + ", name=" + name + ", permission=" + permission + "]";
    }

}

权限类

@Entity
@Table(name="PERMISSIONS")
public class Permissions implements GrantedAuthority {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(unique = true)
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Permissions() {}
    public Permissions( String name) {
        this.name = name;
    }
    @Override
    public String getAuthority() {
        // TODO Auto-generated method stub
        return name;
    }

    @Override
    public String toString() {
        return "permissions [id=" + id + ", name=" + name + "]";
    }
}

【问题讨论】:

  • 请您也添加权限java类吗?
  • 我添加了权限类
  • 类名是Permission还是Permissions
  • 查看错误消息,很明显您已将错误的类导入 Role - java.security.Permission - 而不是 your.package.Permission
  • 这是权限:)

标签: java spring hibernate spring-boot jpa


【解决方案1】:

你写错了Set&lt;Permission&gt;,即java.security.Permission。所以把它改成Set&lt;Permissions&gt; 那是你自己的类文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    相关资源
    最近更新 更多