【发布时间】:2016-06-03 05:18:06
【问题描述】:
我有 3 个类,我正在尝试获取用户订阅的事件主机的所有事件的列表。我可能想得太复杂了,但我对 JPA/HQL 的经验很少。
用户类
@ManyToMany
@JoinTable(name = "Subscriptions", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id") , inverseJoinColumns = @JoinColumn(name = "event_host_id", referencedColumnName = "id") )
private List<EventHost> subscriptions;
EventHost 类
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "event_host_id", referencedColumnName = "id", updatable = true)
private List<Event> events;
我尝试使用此查询,但它告诉我未映射订阅,因为它不是 java 类。
String hql = "SELECT o FROM Event WHERE event_host_id IN (SELECT a FROM EventHost WHERE id IN(SELECT b FROM User WHERE = + " + userid + "))";
我知道像这样注入用户 ID 是不好的做法,我只是为了测试目的。
请问您是否需要更多内容,我真的很想了解如何为此编写查询。
【问题讨论】:
标签: java mysql jpa hibernate-entitymanager