我有一个实体Venue及其活动:
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?
数据库中可能存在数千个事件,因此迭代“事件”以获取当前事件可能不是一个好的理想选择。
这是正确的做法吗?这可行吗?如何拆分当前和过去的事件并将它们命令?
谢谢!
答案 0 :(得分:1)
当然有可能。但是没有使用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();