feat: added two entities Terminal and Visit
This commit is contained in:
parent
6f49192b40
commit
712f35a2cc
@ -1,4 +1,48 @@
|
||||
package com.example.nto.domain.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.Size;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.hibernate.annotations.UuidGenerator;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table(name = "terminals")
|
||||
public class Terminal {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private long id;
|
||||
|
||||
@Column(name = "name")
|
||||
@NotBlank(message = "Название не может быть пустым!")
|
||||
@Size(max = 100, message = "Максимальная длина названия 100 символов!")
|
||||
private String name;
|
||||
|
||||
// Мне нужна была рандомная генерация кода для терминала, так что я мог сделать кривую реализацию через самописную функцию,
|
||||
// но боялся, что она будет генерировать не уникальные значения. (я очень смутно представляю, как эта штука работает)
|
||||
// Код взят отсюда: https://stackoverflow.com/questions/76723290/using-the-new-type-for-uuidgenerator-instead-of-strategy
|
||||
@UuidGenerator
|
||||
@NotBlank(message = "Код не может быть пустым!")
|
||||
@Column(name = "code", nullable = false, unique = true)
|
||||
private String code;
|
||||
|
||||
// todo: Протестировать нужен ли тут каскад тип
|
||||
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
|
||||
@JoinColumn(name = "office_id", nullable = false)
|
||||
private Office office;
|
||||
|
||||
@OneToMany(mappedBy = "startTerminal")
|
||||
private List<Visit> startVisits;
|
||||
|
||||
@OneToMany(mappedBy = "endTerminal")
|
||||
private List<Visit> endVisits;
|
||||
}
|
||||
|
@ -1,4 +1,43 @@
|
||||
package com.example.nto.domain.entity;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table(name = "visits")
|
||||
public class Visit {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private long id;
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "employee_id", referencedColumnName = "id", nullable = false)
|
||||
private Employee employee;
|
||||
|
||||
@Column(name = "start_visit", columnDefinition = "TIMESTAMP", nullable = false)
|
||||
private LocalDateTime startVisit;
|
||||
|
||||
@Column(name = "end_visit", columnDefinition = "TIMESTAMP")
|
||||
private LocalDateTime endVisit;
|
||||
|
||||
@Column(name = "is_finished", nullable = false)
|
||||
private boolean isFinished = false;
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "start_terminal_id", referencedColumnName = "code", nullable = false)
|
||||
private Terminal startTerminal;
|
||||
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "end_terminal_id", referencedColumnName = "code")
|
||||
private Terminal endTerminal;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user