Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 如何创建具有@GeneratedValue的实体实例来插入模拟数据而不更新现有行?_Java_Spring Boot - Fatal编程技术网

Java 如何创建具有@GeneratedValue的实体实例来插入模拟数据而不更新现有行?

Java 如何创建具有@GeneratedValue的实体实例来插入模拟数据而不更新现有行?,java,spring-boot,Java,Spring Boot,这是我的实体: @实体 @桌子 @诺尔格构装师 @AllArgsConstructor @塞特 @吸气剂 公共类样本{ @身份证 @GeneratedValue(策略=GenerationType.IDENTITY) 私有int-id; 私有字符串名称; 私有布尔值; } 我想将模拟数据插入数据库: @springboot应用程序 公共类MyApplication{ 公共静态void main(字符串[]args){ ApplicationContext上下文=SpringApplicati

这是我的实体:


@实体
@桌子
@诺尔格构装师
@AllArgsConstructor
@塞特
@吸气剂
公共类样本{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私有int-id;
私有字符串名称;
私有布尔值;
}
我想将模拟数据插入数据库:

@springboot应用程序
公共类MyApplication{
公共静态void main(字符串[]args){
ApplicationContext上下文=SpringApplication.run(MyApplication.class,args);
Service=context.getBean(Service.class);
save(新示例(“name”,true);//未编译,缺少id
save(新示例(10,“name”,true);//如果存在id为10的行,则会对其进行更新
}
}
正如注释中所解释的,它要么不编译,要么替换行

当通过控制器添加数据时,我可以不定义json上的id,它将生成一个新的id。控制器是如何实现这一点的

编辑: 服务通过调用JpaRepository的save方法来保存对象

public Sample save(Sample s) {
    return repository.save(s);
}

您的问题是pojo示例没有没有id的构造函数。您使用了注释@NoArgsConstructor和@AllArgsConstructor,分别为您提供了一个空构造函数和一个包含所有字段的构造函数。在控制器中,由于控制器上存在序列化和反序列化,它可以工作(Spring上默认为Jackson)能够使用空构造函数和直接访问字段来构建缺少字段的对象

您所要做的就是创建一个构造函数,其中包含pojo示例中所需的字段,因此在所描述的情况下如下所示:

public Sample(String name, boolean whatever) {
    this.name = name;
    this.whatever = whatever;
}

这将解决您的问题。

创建一个没有ID的构造函数服务如何保存对象?您能展示它的实现吗?我将用服务类更新答案,尽管@Jens comment有效。但不能接受作为答案的注释。