报错如下
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.kk.entity.User
网上的很多办法都是在主键上添加 下面的注解即可解决,但是我试了很多次还是不行,仔细看了下代码,原来IDEA 自作多情的给你加了 @Id 注解到 getId() 方法上,导致Id 重复,删除这个地方即可
@GeneratedValue(strategy = GenerationType.AUTO)
完整可用代码如下:
package com.kk.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.lang.annotation.Native;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO) // 这里的注解一定要添加
private Long id;
private String name;
private int age;
public void setId(Long id) {
this.id = id;
}
// @Id 这里的注解一定要去掉,只保留成员变量上的注解即可
public Long getId() {
return id;
}
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
再次运行即可解决问题
当遇到Hibernate报错'ids for this class must be manually assigned before calling save(): com.kk.entity.User'时,问题可能在于IDEA错误地将@Id注解添加到了getId()方法上,而非成员变量上。通过移除getId()上的@Id注解,并在成员变量id上正确使用@GeneratedValue(strategy=GenerationType.AUTO)注解,可以解决这个问题。确保@Entity类的User中主键id字段正确配置,即可避免手动分配ID并成功保存数据。
1295

被折叠的 条评论
为什么被折叠?



