当主键从postGres触发器自动生成时,尝试saveAndFlush提交(JPA)时出现问题 &g



我正在使用spring JPA尝试将记录写入postGres DB。在提交时,我得到以下错误:

Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "col_id" violates not-null constraint
Detail: Failing row contains (null, null, null, null, null)

我有以下存储库接口:

public interface MyRepo extends JpaRepository <MyModel, String> {
}

,以下模型类:

@Entity
@Validated
@Table(name = "my_table", schema="common")
public class MyModel {
@Id
@Column(name = "col_id")
private String id;
@Column(name = "second_col")
private String secCol;
@Column(name = "third_col")
private String thirdCol;
@Column(name = "fourth_col")
private String fourthCol;
@Column(name = "fifth_col")
private String fifthCol;

public MyModel() {
}
public MyModel(String id, String secCol, String thirdCol, String fourthCol, String fifthCol) {
this.id = id;
this.secCol = secCol;
this.thirdCol = thirdCol;
this.fourthCol = fourthCol;
this.fifthCol = fifthCol;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSecCol() {
return secCol;
}
public void setSecCol(String secCol) {
this.secCol = secCol;
}
public String getThirdCol() {
return thirdCol;
}
public void setThirdCol(String thirdCol) {
this.thirdCol = thirdCol;
}
public String getFourthCol() {
return fourthCol;
}
public void setFourthCol(String fourthCol) {
this.fourthCol = fourthCol;
}
public String getFifthCol() {
return fifthCol;
}
public void setFifthCol(String fifthCol) {
this.fifthCol = fifthCol;
}
}

,以及服务类的相关部分:

public MyModel myModel  (MyModel myModel) {
MyModel mm = null;
try {
mm = myRepo.saveAndFlush(myModel);
} catch ( Exception e) {
e.printStackTrace();
}
return mm;
}

更新:我终于意识到我的问题是由于数据库触发器针对复杂的业务规则自动生成主键。此外,我假设我可能需要使用自定义保存方法,而不是默认的repo.saveAndFlush?我将感激任何想法给予新的信息。谢谢!

我用Postgres在一个测试项目中复制了完全相同的代码,它对我来说工作得很好。您完全正确地认为模型类的值没有被填充。你也必须共享你的控制器。如果我能知道你的服务是从哪里被调用的,这可能对我帮助很大。只有这样才能帮助我推断出为什么你的模型值在服务调用中被作为null传递。

最新更新