У меня есть две сущности Task и TaskStatus.Задача может иметь историю TaskStatuses (1-n).Я перечислил их ниже (урезанные, чтобы убрать беспорядок).
@Entity
public class Task implements Serializable {
@Id
private int task_id;
private String name;
private String description;
@JsonManagedReference("task-taskstatuses")
@OneToMany(fetch = FetchType.LAZY, mappedBy="task")
private Collection<TaskStatus> task statuses;
@Transient private String latest_status; // this field I want to calculate based on the task statuses
}
@Entity
@IdClass(TaskStatusId.class)
public class TaskStatus implements Serializable {
@Id
@ManyToOne
@JoinColumn(name="task_id", referencedColumnName="task_id")
private Task task;
@Id
private Timestamp timestamp;
private String status;
private String username;
}
Вопрос касается поля latest_status в объекте Task.У меня есть веб-сервис, который предлагает интерфейс REST (на основе Джерси, Джексона и Tomcat).Существует простой RET URI /RetrieveTask.json, который возвращает сериализованный объект Task, и он работает отлично.Но теперь я хотел добавить в сущность «Задача» поле, указывающее последний статус задачи (что можно определить по таблице TaskStatus, отсортированной по метке времени поля).Каков наилучший способ сделать это?
Я думаю, это должно быть поле Transient, потому что мне кажется, не имеет смысла хранить его в таблице Task в базе данных.Должен ли я рассчитать это переходное поле latest_status в методе службы JPA и заполнить его там с помощью запроса JP QL?