@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(propagation = Propagation.REQUIRES_NEW)
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) throws IOException {
repository.save(new MyEntity(name, "ACTIVE"));
nestedPersister.persist("nested-" + name);
}
}