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

2022-09-01 00:13:50

我正在处理数据库中的表,并且该表没有主键或适当的列,而该列具有可以充当主键的唯一值,我没有更改该表的权限。

我该怎么办?我尝试将@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;
}

答案 1

我遇到了这个问题,并且对@id使用了错误的导入:

确保它是:

import javax.persistence.Id;

而不是:

import org.springframework.data.annotation.Id;

答案 2

休眠是解决SQL数据库的中间值,由于sql数据库中的每一行都应该有一个唯一的标识符,休眠会强制您定义一个。

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

@Id 
@GeneratedValue
@Column(name = "id")
private int id;

由于不允许重复,因此选择任意列不是要走的路。


推荐