我有一个实体场地及其活动:

  Event { ID, Name, DateTime }
  Venue { ID, Name, @OneToMany List<Event> events}


我想要实现的是能够在视图中调用这些函数(使用OpenEntityManagerInView):

  customVenue.getId(); // no problem
  customVenue.getName(); // no problem
  customVenue.getEvents(); // no problem
  customVenue.getCurrentEvents(); // hm?
  customVenue.getPastEvents(); // hm?


数据库中可能有数千个事件,因此遍历“事件”以获取当前事件可能不是一个好主意。

这是正确的方法吗?这可行吗?如何拆分当前和过去的事件并进行排序?

谢谢!

最佳答案

当然可以。但是不要使用customVenue方法(除非实体引用了实体管理器,这是一个坏主意)。

执行查询:

String jpql = "select event from Venue venue"
              + " inner join venue.events event"
              + " where event.date < :now"
              + " order by event.date asc";
List<Event> pastEvents = em.createQuery(jpql, Event.class)
                           .setParameter("now", new Date())
                           .getResultList();

07-27 23:57