Org.Hibernate.AnnotationException:没有为实体指定的标识符我的表中没有id

sta*_*000 37 java hibernate jpa spring-mvc spring-data

我正在使用数据库中的表,并且该表没有主键或具有可作为主键的唯一值的正确列,我没有权限来更改该表.

我该怎么办?我尝试将@id注释放在一个随机列中并且它有效,但我不知道这是否会在以后带来任何麻烦.我能做什么?

我的课

@Entity
@Table(name="my_table")
public class TheTable {
@Column (name="name", nullable=false)
    private String name;

    @Id <--- I just put this id in this random column but this column should not be a id column
    @Column (name="anyfield", nullable=false)
    private String anyfield;
}
Run Code Online (Sandbox Code Playgroud)

Cor*_*Roy 142

我有这个问题,并使用错误的导入为@id:

确保它是:

import javax.persistence.Id;
Run Code Online (Sandbox Code Playgroud)

并不是:

import org.springframework.data.annotation.Id;
Run Code Online (Sandbox Code Playgroud)

  • 我登录只是为了投票,它对我有用 (5认同)

小智 12

Hibernate是地址SQL数据库的中间件,由于sql数据库中的每一行都应该有唯一的标识符,因此hibernate会强制您定义一个.

以下是生成的主键示例,它将自动添加(不要忘记getter和setter)

@Id 
@GeneratedValue
@Column(name = "id")
private int id;
Run Code Online (Sandbox Code Playgroud)

由于不允许重复,因此选择任意列是不可取的.