package com.company.projectmanagement.entity; import io.jmix.core.DeletePolicy; import io.jmix.core.entity.annotation.JmixGeneratedValue; import io.jmix.core.entity.annotation.OnDeleteInverse; import io.jmix.core.metamodel.annotation.InstanceName; import io.jmix.core.metamodel.annotation.JmixEntity; import jakarta.persistence.*; import jakarta.validation.constraints.FutureOrPresent; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.PositiveOrZero; import java.time.LocalDate; import java.util.UUID; @JmixEntity @Table(name = "TASK_", indexes = { @Index(name = "IDX_TASK__ASSIGNEE", columnList = "ASSIGNEE_ID"), @Index(name = "IDX_TASK__PROJECT", columnList = "PROJECT_ID") }) @Entity(name = "Task_") public class Task { @JmixGeneratedValue @Column(name = "ID", nullable = false) @Id private UUID id; @InstanceName @Column(name = "NAME", nullable = false) @NotNull private String name; @FutureOrPresent @Column(name = "DUE_DATE") private LocalDate dueDate; @JoinColumn(name = "ASSIGNEE_ID") @ManyToOne(fetch = FetchType.LAZY) private User assignee; @Column(name = "PRIORITY") private String priority; @Column(name = "DESCRIPTION") @Lob private String description; @PositiveOrZero @Column(name = "ESTIMATION") private Integer estimation; @OnDeleteInverse(DeletePolicy.CASCADE) @JoinColumn(name = "PROJECT_ID", nullable = false) @ManyToOne(fetch = FetchType.LAZY, optional = false) private Project project; public Project getProject() { return project; } public void setProject(Project project) { this.project = project; } public Integer getEstimation() { return estimation; } public void setEstimation(Integer estimation) { this.estimation = estimation; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public TaskPriority getPriority() { return priority == null ? null : TaskPriority.fromId(priority); } public void setPriority(TaskPriority priority) { this.priority = priority == null ? null : priority.getId(); } public User getAssignee() { return assignee; } public void setAssignee(User assignee) { this.assignee = assignee; } public LocalDate getDueDate() { return dueDate; } public void setDueDate(LocalDate dueDate) { this.dueDate = dueDate; } public String getName() { return name; } public void setName(String name) { this.name = name; } public UUID getId() { return id; } public void setId(UUID id) { this.id = id; } }