JPA实体及其自定义功能

时间:2012-03-18 18:35:17

标签: java hibernate jpa

我有一个实体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?

数据库中可能存在数千个事件,因此迭代“事件”以获取当前事件可能不是一个好的理想选择。

这是正确的做法吗?这可行吗?如何拆分当前和过去的事件并将它们命令?

谢谢!

1 个答案:

答案 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();