У меня есть следующая таблица, определенная с помощью JPA:
@Data
@Entity
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(unique = true)
private String name;
private Integer budget;
private String description;
private Boolean isArchived;
private LocalDate archivedDate;
@Transient
private Integer usedBudget;
@NotNull
@ManyToOne
private Customer customer;
}
У меня есть метод REST-API getProjects()
, который возвращает все проекты из базы данных. usedBudged
не сохраняется в базе данных и должен быть рассчитан. В большинстве случаев, когда я звоню getProjects()
, мне не нужен атрибут usedBudget
. Но в одном случае я хотел бы рассчитать usedBudget
проекта и отправить его напрямую с объектом проекта, поэтому мне не нужно сначала получать все проекты и делать отдельный вызов API для каждого проекта, чтобы получить usedBudget
,Поэтому для достижения этого я добавил свойство usedBudget
к объекту Project и пометил его как временное. Таким образом, он не сохраняется в базе данных, и когда я хочу получить usedBudget
, я просто вычисляю его и устанавливаю перед возвратом объекта проекта. Единственная проблема заключается в том, что, даже если он не установлен (ноль), он получает отправку через JSON. Есть ли способ игнорировать / не отправлять это временное значение всякий раз, когда его значение равно нулю?
Другим решением моей проблемы может быть вспомогательный класс, который расширяет Project и имеет этот дополнительный атрибут usedBudget
. Поэтому, когда мне нужно usedBudget
, я возвращаю вспомогательный класс, а всякий раз, когда я этого не делаю, я просто возвращаю обычный проект (в этом случае нет временного свойства usedBudget). Таким образом, я бы никогда не отправил бесполезные нулевые значения.
Какой из подходов лучше и есть, может быть, лучший?