У меня есть класс модели Alert
с отношением один ко многим с другим классом модели Occurrence
, как показано ниже:
@Entity public class Alert extends Model
{
public String name;
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="alert")
public List<Occurrence> occurrences;
}
@Entity public class Occurrence extends Model
{
@ManyToOne
public Alert alert;
@Column(nullable=false)
public Date alertTime;
}
У меня есть представление, в котором перечислены оповещения в простой таблице, в которой должен быть столбец с надписью «Вхождения сегодня» со счетчиком количества появлений оповещения сегодня (по alertTime
).
Кажется, я не могу найти способ сделать это, используя только аннотации JPA / Hibernate в классе модели Alert
, и, поскольку я перечисляю Alerts, я не знаю чистого способа включить счет в каждый Alert
объект.
Так что теперь я задаюсь вопросом, хорошо ли было бы просто запрашивать вхождения оповещения из внутри самого класса модели Alert
, например:
@Entity public class Alert extends Model
{
public String name;
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="alert")
public List<Occurrence> occurrences;
@Transient
public long getOccurrencesToday()
{
return Occurrence.count(
"alert = ? and alertTime >= ?",
this, new DateMidnight().toDate());
}
}
У меня такой вопрос: считается ли плохой формой делать запросы к БД из класса модели?
Вторичный вопрос: я подхожу к этому неправильно? Есть ли лучший способ достичь конечного результата, который я пропустил?