diff --git a/data/data-jpa/src/appTest/java/com/example/data/jpa/DataJpaApplicationAotTests.java b/data/data-jpa/src/appTest/java/com/example/data/jpa/DataJpaApplicationAotTests.java index 2465fa31..e5014746 100644 --- a/data/data-jpa/src/appTest/java/com/example/data/jpa/DataJpaApplicationAotTests.java +++ b/data/data-jpa/src/appTest/java/com/example/data/jpa/DataJpaApplicationAotTests.java @@ -96,4 +96,16 @@ void abstractPersistable(AssertableOutput output) { }); } + @Test + void listVouchers(AssertableOutput output) { + Awaitility.await().atMost(Duration.ofSeconds(10)).untilAsserted(() -> { + assertThat(output) + .hasSingleLineContaining( + "listVouchers(): voucher = Voucher{id=1, msisdn='0810000000', status=0, dateCreated") + .hasSingleLineContaining( + "listVouchers(): voucher = Voucher{id=2, msisdn='0810000000', status=1, dateCreated="); + + }); + } + } diff --git a/data/data-jpa/src/main/java/com/example/data/jpa/NonTransactionalRunner.java b/data/data-jpa/src/main/java/com/example/data/jpa/NonTransactionalRunner.java new file mode 100644 index 00000000..f4ee0440 --- /dev/null +++ b/data/data-jpa/src/main/java/com/example/data/jpa/NonTransactionalRunner.java @@ -0,0 +1,35 @@ +package com.example.data.jpa; + +import java.util.List; + +import com.example.data.jpa.model.Voucher; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +@Component +public class NonTransactionalRunner implements CommandLineRunner { + + private final VoucherRepository voucherRepository; + + public NonTransactionalRunner(VoucherRepository voucherRepository) { + this.voucherRepository = voucherRepository; + } + + @Override + public void run(String... args) { + insertVouchers(); + listVouchers(); + } + + private void insertVouchers() { + this.voucherRepository.save(new Voucher("0810000000", 0)); + this.voucherRepository.save(new Voucher("0810000000", 1)); + } + + private void listVouchers() { + List vouchers = this.voucherRepository.findByMsisdn("0810000000"); + vouchers.forEach(voucher -> System.out.printf("listVouchers(): voucher = %s%n", voucher)); + } + +} diff --git a/data/data-jpa/src/main/java/com/example/data/jpa/CLR.java b/data/data-jpa/src/main/java/com/example/data/jpa/TransactionalRunner.java similarity index 95% rename from data/data-jpa/src/main/java/com/example/data/jpa/CLR.java rename to data/data-jpa/src/main/java/com/example/data/jpa/TransactionalRunner.java index 43d38534..85c520f2 100644 --- a/data/data-jpa/src/main/java/com/example/data/jpa/CLR.java +++ b/data/data-jpa/src/main/java/com/example/data/jpa/TransactionalRunner.java @@ -15,7 +15,7 @@ import org.springframework.transaction.annotation.Transactional; @Component -class CLR implements CommandLineRunner { +class TransactionalRunner implements CommandLineRunner { private final AuthorRepository authorRepository; @@ -23,7 +23,8 @@ class CLR implements CommandLineRunner { private final PublisherRepository publisherRepository; - CLR(AuthorRepository authorRepository, BookRepository bookRepository, PublisherRepository publisherRepository) { + TransactionalRunner(AuthorRepository authorRepository, BookRepository bookRepository, + PublisherRepository publisherRepository) { this.authorRepository = authorRepository; this.bookRepository = bookRepository; this.publisherRepository = publisherRepository; diff --git a/data/data-jpa/src/main/java/com/example/data/jpa/VoucherRepository.java b/data/data-jpa/src/main/java/com/example/data/jpa/VoucherRepository.java new file mode 100644 index 00000000..d48a5c39 --- /dev/null +++ b/data/data-jpa/src/main/java/com/example/data/jpa/VoucherRepository.java @@ -0,0 +1,13 @@ +package com.example.data.jpa; + +import java.util.List; + +import com.example.data.jpa.model.Voucher; + +import org.springframework.data.repository.CrudRepository; + +public interface VoucherRepository extends CrudRepository { + + List findByMsisdn(String msisdn); + +} diff --git a/data/data-jpa/src/main/java/com/example/data/jpa/model/Voucher.java b/data/data-jpa/src/main/java/com/example/data/jpa/model/Voucher.java new file mode 100644 index 00000000..b6cad505 --- /dev/null +++ b/data/data-jpa/src/main/java/com/example/data/jpa/model/Voucher.java @@ -0,0 +1,87 @@ +package com.example.data.jpa.model; + +import java.util.Date; +import java.util.Objects; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; + +@Entity +public class Voucher { + + @Id + @GeneratedValue + private Integer id; + + private String msisdn; + + private int status; + + private Date dateCreated; + + protected Voucher() { + } + + public Voucher(String msisdn, int status) { + this.id = null; + this.msisdn = msisdn; + this.status = status; + this.dateCreated = new Date(); + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getMsisdn() { + return msisdn; + } + + public void setMsisdn(String msisdn) { + this.msisdn = msisdn; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public Date getDateCreated() { + return dateCreated; + } + + public void setDateCreated(Date dateCreated) { + this.dateCreated = dateCreated; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Voucher voucher = (Voucher) o; + return status == voucher.status && Objects.equals(id, voucher.id) && Objects.equals(msisdn, voucher.msisdn) + && Objects.equals(dateCreated, voucher.dateCreated); + } + + @Override + public int hashCode() { + return Objects.hash(id, msisdn, status, dateCreated); + } + + @Override + public String toString() { + return "Voucher{" + "id=" + id + ", msisdn='" + msisdn + '\'' + ", status=" + status + ", dateCreated=" + + dateCreated + '}'; + } + +} diff --git a/data/data-jpa/src/main/resources/schema.sql b/data/data-jpa/src/main/resources/schema.sql deleted file mode 100644 index 14e51639..00000000 --- a/data/data-jpa/src/main/resources/schema.sql +++ /dev/null @@ -1,12 +0,0 @@ -create table author -( - id bigint auto_increment primary key, - name varchar not null -); - -create table book -( - id bigint auto_increment primary key, - author bigint not null references author (id), - title varchar not null -);