我正在使用Java JPA/Hibernate连接Postgres,并希望将id字段手动生成,即每当我创建此对象的实例时,都会设置id字段。 我已经尝试了几周,但总是遇到以下问题之一:“未找到所需的标识符属性”或“保存后,标识符不能为空”。以下是我使用的模型类的示例:
import javax.persistence.*;
@Entity
@Table(name = "pojo")
public class Pojo {
@Id
@Column(name = "id_one")
private int idOne;
@Column(name = "bool_example")
private boolean boolExample;
public Pojo(){};
public Pojo(int idOne, boolean boolExample){
this.idOne = idOne;
this.boolExample = boolExample;
}
public int getIdOne() {
return idOne;
}
public void setIdOne(int idOne) {
this.idOne = idOne;
}
public boolean isBoolExample() {
return boolExample;
}
public void setBoolExample(boolean boolExample) {
this.boolExample = boolExample;
}
}
这是我正在调用的样本请求
@GetMapping(value = "/plswork")
public String pojotestone(){
Pojo newpojo = new Pojo(1, false);
pojoService.saveThis(newpojo);
pojoService.test();
return "yes";
}
pojoService 调用 pojoRepository.save(T entity)。这里的 pojoRepository 继承了 CrudRepository,所以它可以动态创建查询语句。
@Id
的一些见解 -> https://dev59.com/XpXfa4cB1Zd3GeqPgIMb。它不会为您生成 PK,只会生成列。 - Sachith DickwellaInteger
代替int
。同时重写equals
和hashcode
方法。并确保在模式级别上定义了主键。 - the_tech_maddy