【发布时间】:2017-09-24 21:04:39
【问题描述】:
是否可以使用命名查询根据包含某个值的列表查找所有实体。
我有一个名为用户的实体
public class User implements Serializable {
private static final long serialVersionUID = -82485348776234092345L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotNull
@Size(min = 5, max = 50)
@Column(name = "email")
private String email;
@NotNull
@Size(min = 5, max = 50)
@Column(name = "password")
private String password;
@Column(name = "creationDate")
@Temporal(TemporalType.TIMESTAMP)
private Date creationDate;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "user", cascade = CascadeType.ALL)
private List<Phone> phoneNumbers;
/* Getters and Setters */
}
我将简化电话实体以保持这篇文章的整洁:
public class Phone implements Serializable {
private static final long serialVersionUID = -34672347534985L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotNull
@Column(name = "number")
private String number;
@Column(name = "type")
@Enumerated(EnumType.STRING)
private EPhoneType phoneType;
@Column(name = "creationDate")
@Temporal(TemporalType.TIMESTAMP)
private Date creationDate;
@ManyToOne
private User user;
/* Getters and Setters */
}
现在我需要找到所有拥有电话号码的用户,比如说:289647.... 和 Phone.type = 'MOBILE'
电话类型是枚举。
我不确定如何使用命名查询来实现这一点。通过常规的本机查询,我可以在表上使用 JOIN 来完成这项工作。有没有人用 NamedQuery 做过类似的事情
【问题讨论】:
标签: java hibernate jpa named-query