如何设置没有@id元素的@entity?

Alf*_*o M 3 java hibernate

我有这个豆:

@Entity
@Table(name = "accesos")
public class Acceso implements Serializable {
    /** */
    @Column(name = "idUser")
    private String idUser;
    /** */
    @ManyToOne
    @JoinColumn(name = "idArea")
    private Area area;
    /** */
    @ManyToOne
    @JoinColumn(name = "idRol")
    private Rol rol;
Run Code Online (Sandbox Code Playgroud)

但是我得到这个错误:

原因:org.hibernate.AnnotationException:未为实体指定标识符:com ... Acceso

我该如何设置这个豆?我需要的是根据用户ID获取他有权访问的所有ROL-AREA。

我尝试将更@Entity改为@Embedded,但是当我进行搜索时没有返回任何结果,即使在日志中也没有执行SQL语句。

sla*_*dan 5

您必须为每个bean拥有一个标识,没有办法。但是,如果您的字段都不是唯一的,则可以使用组合键。

如果您的所有字段的组合是唯一的,然后尝试注释的所有字段@Id。尽可能少的字段,但要使组合唯一则需要尽可能多的字段。


sla*_*rge -2

您没有指定 id,因此必须将 @Id 注释添加到 idUser

@Id
@Column(name = "idUser")
private String idUser;
Run Code Online (Sandbox Code Playgroud)