Hibernate" ManyToOne ...引用一个未知的实体"例外

时间:2015-12-03 14:32:57

标签: java mysql hibernate exception servlets

我无法在使用Hibernate映射到SQL表的两个类之间建立关系。

角色类:

@Entity
@Table(name = "role")
public class Role {
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="name")
    private String name;

    @OneToMany(mappedBy="memberinfo")
    private Set<Memberinfo> members;

    ...
}

还有会员信息类:

@Entity
@Table(name = "memberinfo")
public class Memberinfo {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id", nullable = false)
    private int id;

    @Column(name = "userid", nullable = false)
    private String userid;

    @Column(name = "email", nullable = false)
    private String email;

    @Column(name = "password", nullable = false)
    private String password;

    @Column(name = "salt", nullable = false)
    private String salt;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "address")
    private String address;

    @Column(name = "phonenum")
    private String phonenum;

    @ManyToOne(targetEntity=Role.class)
    @JoinColumn(name="role_id")
    private Role role;

    ...
}

当我尝试从数据库中获取数据时,它会连接,但会抛出异常: &#34; HTTP状态500 - 模型上的@OneToOne或@ManyToOne.Memberinfo.role引用未知实体:model.Role&#34;。

如果我删除了变量&#34; Role&#34;,那么它可以工作,我可以获取成员资格数据,但我需要两个表之间的连接,但在这种情况下,前面提到的异常每次出现时间。

到目前为止,stackoverflow上没有其他解决方案对我有用。

知道我做错了什么?

1 个答案:

答案 0 :(得分:7)

&#34;未知实体错误&#34;如果类实际上不是实体(没有注释whith javax.persistence @Entity)或者如果persitence提供者没有&#34;知道&#34;那么可以抛出班级(未扫描的包裹)。

在Memberinfo中导入的Role类是否正确?也许您正在从另一个库中导入另一个Role类。