java - JPA 实体及其自定义功能

标签 java hibernate jpa

我有一个实体 field 及其 Activity :

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

我想要实现的是能够在 View 中调用这些函数(使用 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();

关于java - JPA 实体及其自定义功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9761083/

相关文章:

java - Jetty 6 - 虚拟主机

java.lang.ClassNotFoundException : play. db.jpa.JPABase 使用 hibernate

java - 如何使用 Hibernate 进行级联删除

java - Spring Boot + JPA : Column name annotation ignored

java - Hibernate 没有在 Spring Boot 项目中抛出 LazyInitializationException

Java 调用对象问题

java - 使用 ArrayList 在优先级队列中插入方法

具有不区分大小写搜索的 Hibernate + Postgresql

java - 是否有任何形式可以使用 spring-data jpa 将查询方法中的条件分组?

Java:使用字符扫描器搜索文件