当前位置: 首页 > 知识库问答 >
问题:

spring数据jpa手动保存分配标识符

燕钟展
2023-03-14

我使用spring save

  HighWay highWay = new HighWay();
     highWay.setId("000");
    HighWayRepository hRepository = (HighWayRepository) context
                    .getBean("highWayRepository");
            hRepository.save(highWay);
            hRepository.flush();


    public interface HighWayRepository extends JpaRepository<HighWay, String> {

    }

该表类似于f_idvarchar(256)NOT NULL,

public class HighWay {
    @Id
    @Column(name="f_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String id;}

原因:java.sql.sqlexception:字段“f_id”在com.mysql.jdbc.sqlerror.createsqlexception(sqlerror.java:946)在com.mysql.jdbc.mysqlio.checkerrorpacket(mysqlio.java:2870)在com.mysql.jdbc.mysqlio.sendcommand(mysqlio.java:1573)在com.mysql.jdbc.serverpreparedstatement.serverexecute(serverpreparedstatement.1169)在

我检查文档,Id-Property inspection(默认)默认情况下Spring Data JPA检查给定实体的Id-Property。如果Id-Property为null,则该实体将被认为是新的,否则将被认为不是新的。

sql就像Hibernate:插入us_highway(blockTime,blockType,endNum,predictTime,publishTime,roadName,satition,startNum,tips)values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)不插入id!

因为我要手动分配id,所以id-property不是null如果是新的,如何配置保存?

共有1个答案

宗项禹
2023-03-14

如果您是手工分配Id。请删除Id上的以下批注。

@GeneratedValue(strategy = GenerationType.IDENTITY)
 类似资料:
  • 我正在更新一个现有的代码,该代码处理从一个表到同一数据库中的多个对象的副本或原始数据。 以前,每种对象都使用每个表的序列生成PK。 大概是这样的: 对于这个实体,我没有更改我的JPararePository,如下所示: 现在,我正在努力理解具有默认传播和隔离级别的spring事务(@transactional)中的以下行为: 使用实体上的@GeneratedValue,当我调用EntityRepo

  • 我对Spring数据JPA(Hibernate、PostgreSQL和jdbc)有一个问题。我有两个实体,Texte和Annotation,还有两个存储库,TexteRepository和AnnotationRepository,它们扩展了crudepository。注释与文本具有多对一关系。在控制器中,我会这样做: 执行此操作时,我遇到了一个ConstraintViolationExceptio

  • 我知道这个问题听起来很奇怪,但推理很简单。我有一个用Spring Hibernate开发的服务器端应用程序。 我有一个自定义servlet: 原因是这样的: < li >我正在读取到达servlet的参数 < li >我将从这些参数导出的一些数据存储在数据库中 < li >在某个时候,我意识到出现了错误,无法完成该过程。所以我抛出一个RuntimeException来回滚整个事务 < li >在返

  • 我有一个使用JPA的Spring Boot应用程序,它有两个数据源,一个用于DB2,一个用于SQL Server。 当我尝试将实体保存到SQL Server时,不会抛出任何错误,但该实体不会持久化到数据库。我看不到日志中正在生成插入。 提前感谢 下面是我尝试保存实体所执行的代码@组成部分 下面是sql Server配置。 这是SQL Server存储库 公共接口BeercupMessageLogR

  • 我有一个使用Spring Boot/hibernate的简单项目,在单元测试中插入新值时有bug。对于测试,我使用了一个带有虚拟数据(data.sql)的新数据库,在启动后,当插入测试运行时,我出现了一个错误“密钥冲突”: 我管理带有注释的ID:@ID@GeneratedValue(策略=GenerationType.Auto) @data@entity@table公共类地址{

  • 我有一个使用JPA的Spring Boot应用程序,它有一个PostgreSQL数据库。我使用的是Spring Batch。场景是我正在读取一个文件并将数据写入PostgreSQL数据库。当程序在数据库中创建Spring Batch使用的元数据表时,它与PostgreSQL一起工作。但我需要的是Spring Boot不要创建元数据表,并通过Spring Batch使用内存中基于映射的作业存储库。我