diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Author.java b/spring-data-jpa-2/initial/src/main/java/cholog/Author.java index 937debe1..e61449fe 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Author.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Author.java @@ -1,9 +1,8 @@ package cholog; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; + +import java.util.Set; @Entity public class Author { @@ -11,7 +10,14 @@ public class Author { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @OneToOne + private Person person; + + @OneToMany(mappedBy = "author") + private Set books; + public Author(Person person) { + this.person = person; } public Author() { @@ -22,6 +28,6 @@ public Long getId() { } public Person getPerson() { - return null; + return person; } } diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Book.java b/spring-data-jpa-2/initial/src/main/java/cholog/Book.java index 6f119218..912e9471 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Book.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Book.java @@ -1,11 +1,9 @@ package cholog; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; import java.util.Set; +import java.util.stream.Collectors; @Entity public class Book { @@ -14,11 +12,19 @@ public class Book { private Long id; private String name; + @ManyToOne + private Publisher publisher; + + @OneToMany(mappedBy = "book") + private Set authors; + public Book() { } public Book(String name, Publisher publisher) { + this.name = name; + this.publisher = publisher; } public Long getId() { @@ -30,10 +36,12 @@ public String getName() { } public Publisher getPublisher() { - return null; + return publisher; } public Set getAuthors() { - return null; + return authors.stream() + .map(BookAuthor::getAuthor) + .collect(Collectors.toSet()); } } diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/BookAuthor.java b/spring-data-jpa-2/initial/src/main/java/cholog/BookAuthor.java index 4d9c8d73..36b1e9a8 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/BookAuthor.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/BookAuthor.java @@ -1,7 +1,32 @@ package cholog; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; + +@Entity public class BookAuthor { + + @Id @GeneratedValue + private Long id; + + @ManyToOne + private Book book; + + @ManyToOne + private Author author; + + public BookAuthor() { + + } + public BookAuthor(Book book, Author author) { + this.book = book; + this.author = author; + } + public Author getAuthor() { + return author; } } diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Person.java b/spring-data-jpa-2/initial/src/main/java/cholog/Person.java index 6cf1d009..3bb9af8b 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Person.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Person.java @@ -1,9 +1,6 @@ package cholog; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; @Entity public class Person { @@ -12,6 +9,9 @@ public class Person { private Long id; private String name; + @OneToOne(mappedBy = "person") + private Author author; + public Person() { } @@ -29,6 +29,6 @@ public String getName() { } public Author getAuthor() { - return null; + return author; } } diff --git a/spring-data-jpa-2/initial/src/main/java/cholog/Publisher.java b/spring-data-jpa-2/initial/src/main/java/cholog/Publisher.java index b0c6303e..e2f9c60a 100644 --- a/spring-data-jpa-2/initial/src/main/java/cholog/Publisher.java +++ b/spring-data-jpa-2/initial/src/main/java/cholog/Publisher.java @@ -1,10 +1,9 @@ package cholog; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; +import java.util.HashSet; +import java.util.List; import java.util.Set; @Entity @@ -14,8 +13,12 @@ public class Publisher { private Long id; private String name; + @OneToMany(mappedBy = "publisher", fetch = FetchType.EAGER) + private Set books; + public Publisher(String name) { this.name = name; + this.books = new HashSet<>(); } public Publisher() { @@ -30,10 +33,10 @@ public String getName() { } public void addBook(Book book) { - + books.add(book); } public Set getBooks() { - return null; + return books; } }