Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决JPA更新时数据库中NOTNULL的值?;_Java_Spring Data Jpa - Fatal编程技术网

Java 如何解决JPA更新时数据库中NOTNULL的值?;

Java 如何解决JPA更新时数据库中NOTNULL的值?;,java,spring-data-jpa,Java,Spring Data Jpa,这是我的数据库表,数据库有一个记录id=1,昵称=test,email=null CREATE TABLE `user_info` ( `user_info_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `nickname` varchar(40) NOT NULL, `email` varchar(100) ) 当我用上述代码更新时,出现一个错误列“昵称”不能为空 我知道这是因为JPA必须先执行查找,但我不想在更新操作时给JPA所有不能为空的值

这是我的数据库表,数据库有一个记录id=1,昵称=test,email=null

CREATE TABLE `user_info` (
`user_info_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nickname` varchar(40) NOT NULL,
`email` varchar(100) 
)
当我用上述代码更新时,出现一个错误列“昵称”不能为空

我知道这是因为JPA必须先执行查找,但我不想在更新操作时给JPA所有不能为空的值

补充说明:


假设我的前端只向我发送ID和电子邮件,我如何更新它?使用SQL是可行的,但JPA必须要求昵称不为null

如何解决这个问题?
thx

更新现有记录的方法是加载记录,更新任何需要更新的列,然后通过创建新对象将其保存为而不是

UserInfo info = new UserInfo();
info.setUserInfoId(1);
info.setEmail("hello@hotmail.com");

这不是你展示的更新操作,我错了。我添加了一些描述。如果您需要更新现有实体实例,请按照下面David Conrad的建议检索记录。这实际上是一个关于修补现有实体的问题。除了下面的评论,我还遇到了:在JPA中,没有必要显式保存。假设我的前端只向我发送ID和电子邮件,我如何更新它?使用SQL是可行的,但JPA必须要求昵称而不是空。您需要自己处理这个问题。假设您有一个Spring MVC控制器来处理请求,那么我上次查看时不支持补丁操作,即部分更新。但是,Spring数据Rest扩展不支持。进一步见:。因此,一个选项是删除控制器,并将SDR自动生成的endpint用于基本CRUD。@BOOOMr.Z您所需要的只是ID和电子邮件。您可以按ID查找现有记录,设置电子邮件,然后保存它。它上面已经有昵称了。
UserInfo info = userInfoRepository.findById(1);
info.setEmail("hello@hotmail.com");
userInfoRepository.save(info);