Сохранение репозитория SpringBoot JPA через MariaDB4j - PullRequest
1 голос
/ 11 февраля 2020

У меня странная проблема при попытке сохранить MariaDBj из ApplicationRunner.

Я создал сущности вместе с @service и JpaRepository. Я добавил ведение журнала, так что я знаю, что мое приложение достигает метода RegionEntity savedRegion = repository.save(dummyRegion);, и я получаю id от savedRegion, но когда я делаю repository.count() или repository.findById(...), я получаю 0 или Optional.EMPTY соответственно.

Более того, используя тот же репозиторий из конечной точки API /region/created через @Controller и вызывая службу, поддерживаемую тем же репо, он работает, и объект сохраняется.

Не могу понять, почему, когда я использую тот же репозиторий через 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();
  }
}

Мои зависимости таковы:

<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>

Springboot 2.1.11. Любая помощь высоко ценится?

...