@Entity
@Table(name = "my_entity")
@Getter
@Setter
@NoArgsConstructor
public class MyEntity {
@Id
@GeneratedValue
private Long id;
private String name;
private String status;
public MyEntity(String name, String status) {
this.name = name;
this.status = status;
}
}
public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {
}
@Service
@RequiredArgsConstructor
public class NestedPersister {
private final MyEntityRepository repository;
@Transactional
public void persist(String name) throws IOException {
repository.save(new MyEntity(name, "PENDING"));
Files.write(Path.of("C:", "test", "missing-file.txt"), "data".getBytes());
}
}
@Service
@RequiredArgsConstructor
public class BasePersister {
private final MyEntityRepository repository;
private final NestedPersister nestedPersister;
@Transactional
public void persist(String name) {
repository.save(new MyEntity(name, "ACTIVE"));
try {
nestedPersister.persist("nested-" + name);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@SpringBootApplication
public class ExampleApp {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(ExampleApp.class, args);
BasePersister persister = ctx.getBean(BasePersister.class);
persister.persist("entity1");
}
}