У меня странная проблема при попытке сохранить 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
. Любая помощь высоко ценится?