Hibernate SpringBoot JPA存储库通过MariaDB4j保存

Hibernate SpringBoot JPA存储库通过MariaDB4j保存,hibernate,spring-boot,jpa,repository,mariadb4j,Hibernate,Spring Boot,Jpa,Repository,Mariadb4j,当我试图从ApplicationRunner保存到MariaDBj时,遇到了一个奇怪的问题 我已经创建了实体以及@服务和JpaRepository。我添加了日志记录,因此我知道我的应用程序正在到达RegionEntity savedRegion=repository.save(dummyRegion)

当我试图从
ApplicationRunner
保存到
MariaDBj
时,遇到了一个奇怪的问题

我已经创建了实体以及
@服务
JpaRepository
。我添加了日志记录,因此我知道我的应用程序正在到达
RegionEntity savedRegion=repository.save(dummyRegion)savedRegion
获得
id
,但当我执行
repository.count()
repository.findById(…)
时,我分别获得
0
可选的.EMPTY

此外,通过
@Controller
从API端点
/region/创建的
使用相同的存储库,调用由其工作的相同repo支持的服务,实体被持久化

我不明白为什么当我通过
ApplicationRunner
使用同一存储库时,实体没有被持久化?我确信我不需要刷新/提交事务。我还使用
spring.jpa.hibernate.ddl auto=update

@Repository
public interface RegionRepository  extends JpaRepository<RegionEntity, Integer>     {

}

@Entity
@Table(name = "region_tb")
public class RegionEntity implements Serializable {

private static final long serialVersionUID = 4966369808179876078L;

  @Id
  @GeneratedValue
  private Integer id;
  private String name;
  private String standard;
  private Double price;

}

@Service
public class RegionService {

  private final RegionRepository regionRepository;

  public RegionService(RegionRepository regionRepository) {
    this.regionRepository = regionRepository;
  }

  public void saveRegions() {

    RegionEntity dummyRegion = new  RegionEntity();
    dummyRegion.setName("Test1");
    dummyRegion.setStandard("s1");
    dummyRegion.setPrice(12.99);

    RegionEntity savedRegion =  regionRepository.save(dummyRegion);
    // savedRegion.getId() has valid id 
    Optional<TestVariantEntity> foundRegion = regionRepository.findById(savedRegion.getId());
    // Optional.EMPTY
  }
}

// Application BootStrap
@Component
public class ApplicationBootstrap implements ApplicationRunner {

  private final RegionService regionService;

  @Autowired
  public PriceListDataBootstrap(RegionService regionService) {
    this.regionService = regionService;
  }

  @Override
  public void run(ApplicationArguments args) throws Exception {
    regionService.saveRegions();
  }
}
@存储库
公共接口区域存储库扩展了JpaRepository{
}
@实体
@表(name=“region\u tb”)
公共类RegionEntity实现可序列化{
私有静态最终长serialVersionUID=4966369808179876078L;
@身份证
@生成值
私有整数id;
私有字符串名称;
私有字符串标准;
私人双价;
}
@服务
公共类区域服务{
私有最终区域存储库区域存储库;
公共区域服务(区域存储库区域存储库){
this.regionRepository=regionRepository;
}
公共存储区域(){
RegionEntity dummyRegion=新RegionEntity();
dummyRegion.setName(“Test1”);
Dummy区域。设置标准(“s1”);
dummyRegion.setPrice(12.99);
RegionEntity savedRegion=regionRepository.save(dummyRegion);
//savedRegion.getId()具有有效的id
可选的foundRegion=regionRepository.findById(savedRegion.getId());
//可选。空
}
}
//应用程序引导
@组成部分
公共类ApplicationBootstrap实现ApplicationRunner{
专用最终区域服务区域服务;
@自动连线
公共价格表Databootstrap(RegionService RegionService){
this.regionService=regionService;
}
@凌驾
公共void运行(ApplicationArguments参数)引发异常{
regionService.saveRegions();
}
}
我的家属是这样的:

<dependency>
    <groupId>ch.vorburger.mariaDB4j</groupId>
    <artifactId>mariaDB4j</artifactId>
    <version>2.4.0</version>
</dependency>

<dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <version>2.5.4</version>
</dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-jpa</artifactId>
 </dependency>

ch.vorburger.mariaDB4j
马里亚杰
2.4.0
org.mariadb.jdbc
mariadb java客户端
2.5.4
org.springframework.boot
spring引导启动器数据jpa

Springboot
2.1.11
。非常感谢您的帮助?

这似乎是MariaDB4j的问题;当我将下面的实现替换为内存中的H2时,它工作得非常好。@vorburger可能会有所帮助,这似乎是MariaDB4j的问题;当我将下面的实现替换为内存中的H2时,它工作得非常好。@vorburger可能会有所帮助