Forráskód Böngészése

Create One-to-One Student-Account Relation

Eldar Mukhtarov 10 hónapja
szülő
commit
982458d068

+ 0 - 1
project/backend_springboot/src/main/java/pl/dmcs/eldarmuk/backend_springboot/controller/StudentController.java

@@ -1,7 +1,6 @@
 package pl.dmcs.eldarmuk.backend_springboot.controller;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 

+ 20 - 3
project/backend_springboot/src/main/java/pl/dmcs/eldarmuk/backend_springboot/model/Account.java

@@ -1,23 +1,40 @@
 package pl.dmcs.eldarmuk.backend_springboot.model;
 
+import org.hibernate.validator.constraints.Length;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
+import jakarta.persistence.OneToOne;
+import jakarta.validation.constraints.NotBlank;
 
 @Entity
 public class Account {
     @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
+
+    @NotBlank
+    @Length(min = 3, max = 50)
     private String username;
+
+    @NotBlank
+    @Length(min = 6, max = 100)
     private String password;
     private String email;
 
+    @JsonIgnore
+    @OneToOne(mappedBy = "account")
+    private Student student;
+
     public Account() {}
 
-    public Account(Long id, String username, String password, String email) {
-        this.id = id;
+    public Account(@NotBlank @Length(min = 3, max = 50) String username, @NotBlank @Length(min = 6, max = 100) String password) {
         this.username = username;
         this.password = password;
-        this.email = email;
     }
 
     public Long getId() {

+ 16 - 0
project/backend_springboot/src/main/java/pl/dmcs/eldarmuk/backend_springboot/model/Student.java

@@ -1,16 +1,24 @@
 package pl.dmcs.eldarmuk.backend_springboot.model;
 
 import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
 import jakarta.persistence.Id;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.CascadeType;
 
 @Entity
 public class Student {
     @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
     private String firstName;
     private String lastName;
     private String email;
 
+    @OneToOne(cascade = CascadeType.ALL)
+    private Account account;
+
     public Student() {}
 
     public Student(Long id, String firstName, String lastName, String email) {
@@ -51,4 +59,12 @@ public class Student {
     public void setEmail(String email) {
         this.email = email;
     }
+
+    public Account getAccount() {
+        return account;
+    }
+
+    public void setAccount(Account account) {
+        this.account = account;
+    }
 }

+ 1 - 1
project/backend_springboot/src/main/java/pl/dmcs/eldarmuk/backend_springboot/repository/StudentRepository.java

@@ -7,5 +7,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
 @Repository
 public interface StudentRepository extends JpaRepository<Student, Long> {
     Student findById(long id);
-    // Student findByAccountUsername(String username);
+    Student findByAccountUsername(String username);
 }