【发布时间】:2015-03-10 11:23:19
【问题描述】:
我有两个双向连接的实体,我想仅查询特定日期的位置及其投票。
地点:
@Entity
@Table(name = "TAB_LOCATION")
@NamedQueries({
@NamedQuery(name = "Location.getVotedLocations", query = "SELECT l FROM Location l JOIN l.votes v WHERE v.location = l AND DATE(v.createdAt) = DATE(:date) ORDER BY l.name")
})
public class Location extends AbstractEntity {
@Basic
@Size(min = 5, max = 50)
private String name;
@Basic
@Size(min = 0, max = 50)
private String address;
@OneToMany(mappedBy = "location")
private Set<Vote> votes;
@Basic
private String description;
投票:
@Entity
@Table(name = "TAB_VOTE")
public class Vote extends AbstractEntity {
@Basic
@ManyToOne
@NotNull
private User user;
@Basic
@ManyToOne
@NotNull
private Location location;
我尝试使用命名查询,但无论条件如何,位置似乎总是包含所有投票。
不可以将查询到的值映射回对象吗?
entityManager.createNamedQuery("Location.getVotedLocations").
setParameter("date", date).getResultList();
怎么了?
如果 NamedQueries 无法实现,我也可以使用 Criteria API。
【问题讨论】:
-
@Ankit 我想要一个在特定日期投票的地点列表,如果没有投票,则应跳过该地点。
标签: jpa jpql criteria-api java-ee-7 named-query