我将 Postgres 与 Java JPA/Hibernate 一起使用,并希望将 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";
}
The pojoService calls on pojoRepository.save(T entity). This pojoRepository is from extending CrudRepository so it creates queries on the fly
最佳答案
对于所有想知道的人,
是 - 可以有一个手动 ID,这在实体具有固有 ID 属性的多个用例中是有意义的。 (例如信用卡、银行账户等)
至于这个问题,原来是Spring JDBC的不兼容。解决方案是改用 spring-boot-starter-data-jpa,并且 让存储库扩展 JPARepository 而不是 CrudRepository。
关于java - 如何设置不是在 Java JPA/Hibernate 中自动生成的@Id 主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56746034/