Spring boot spring JPA存储库未将记录刷新到数据库

Spring boot spring JPA存储库未将记录刷新到数据库,spring-boot,hibernate,spring-data-jpa,Spring Boot,Hibernate,Spring Data Jpa,我看到repository.save()作为更新对象的响应,但在数据库中并没有得到反映 我也尝试过使用JPArepository,也尝试过API公开的saveandflush方法,但没有成功 下面是代码和配置的详细信息 使用sql驱动程序和hibernate作为中间件 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=root spring.datasource.pass

我看到repository.save()作为更新对象的响应,但在数据库中并没有得到反映

我也尝试过使用JPArepository,也尝试过API公开的saveandflush方法,但没有成功

下面是代码和配置的详细信息

使用sql驱动程序和hibernate作为中间件

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=
spring.datasource.url=jdbc:mysql://localhost:3306/ccmBatch?useSSL=false

spring.batch.job.enabled=false
spring.datasource.initialize=false

spring.jpa.open-in-view=false
spring.jpa.hibernate.ddl-auto=create
spring.jpa.generate-ddl=true
spring.jpa.hibernate.use-new-id-generator-mappings=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.hibernate.naming.strategy=org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
POJO:

@Entity(name = "jobtracker")
public class JobTracker implements Serializable {
      
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Column(name = "CCMBATCH")
    String lockVal;
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    long id;
    
    public JobTracker() {
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getLockVal() {
        return lockVal;
    }

    public void setLockVal(String lockVal) {
        this.lockVal = lockVal;
    }
    
}
存储库:

@Repository
public interface JobTrackerRepository extends CrudRepository<JobTracker, Long>{
    
}
上面使用的作业对象正在打印正确的更新值

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>2.4.3</version>
    </dependency>



mysql> desc jobtracker;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | bigint       | NO   | PRI | NULL    |       |
| CCMBATCH | varchar(255) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+


org.springframework.boot
spring引导启动器数据jpa
2.4.3
mysql>descjobtracker;
+----------+--------------+------+-----+---------+-------+
|字段|类型|空|键|默认|额外|
+----------+--------------+------+-----+---------+-------+
|id | bigint | NO | PRI | NULL ||
|CCMBATCH | varchar(255)| YES | | NULL ||
+----------+--------------+------+-----+---------+-------+

缺少事务处理可能是问题所在。您没有显示代码的所有相关部分。在调用层次结构中是否有一个方法被注释为@Transactional?我尝试在调用方代码中将@Transactional注释添加到方法中,但仍然没有运气更新的值是什么意思?每次都创建一个新条目。您想说它没有存储在数据库中吗?是的,save()方法返回更新的值,但记录没有存储在数据库中。如果从同一个类中调用
acquireJobExecutionLock
,它也不会工作。
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <version>2.4.3</version>
    </dependency>



mysql> desc jobtracker;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | bigint       | NO   | PRI | NULL    |       |
| CCMBATCH | varchar(255) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+