我创建了一个spring应用程序。我正在尝试使用JPA Repository的save方法将数据保存到数据库中。我收到错误null value in column "id" violates not-null constraint
的HomeController
@RestController
public class HomeController
{
@Autowired
public userRepository repository;
@RequestMapping(value="/save2",method=RequestMethod.POST )
public String save1(@ModelAttribute user us)
{
repository.save(us);
return "sucessfull";
}
}
用户
@Entity
@Table(name="user", schema="new")
public class user implements Serializable
{
private static final long serialVersionUID = -2956665320311624925L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Integer id;
@Column(name="uname")
public String uname;
@Column(name="pass")
public String pass;
表脚本
通过Postman我正在尝试插入以下数据
我收到此错误
org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint
任何人都可以告诉我上面代码中我做错了什么
答案 0 :(得分:1)
我在这里看到了几个问题。
首先,将@ModelAttribute
替换为@RequestBody
,因为您发送了JSON请求,使用后者是明智之举。 (阅读Clip path support和here)。在您的情况下,来自请求的值不会传递到包含save
值的存储库Id
方法。这就是你没有得到空约束错误的原因。
其次,由于您使用的是GenerationType.IDENTITY
策略,因此您应该使用serial
或bigserial
类型让Postgres生成您的主键。
在IDENTITY
策略here
答案 1 :(得分:0)
您在模型类中将id
定义为Integer
字段。尝试将json中的值作为Integer
传递,而不是String
。
{
"id": 1,
"uname": "abc",
"upass": "abc"
}