results of the first day #1
@ -1,4 +1,48 @@
|
|||||||
package com.example.nto.domain.entity;
|
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 {
|
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;
|
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 {
|
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