Java 在列表值中时,如何在hql中使用like查询?

Java 在列表值中时,如何在hql中使用like查询?,java,spring-mvc,hql,Java,Spring Mvc,Hql,我正在使用SpringMVC。 这是我的旧代码,它正确地完善了 public List<Details> filter(String search) { TypedQuery<Details> query = em.createQuery("SELECT DISTINCT um FROM Details um INNER JOIN um.admin ad WHERE um.name like :search and ad.status =:status", Det

我正在使用SpringMVC。 这是我的旧代码,它正确地完善了

public List<Details> filter(String search) {
    TypedQuery<Details> query = em.createQuery("SELECT DISTINCT um FROM Details um INNER JOIN um.admin ad WHERE um.name like :search and ad.status =:status", Details.class );
    String searchkey = search;
    String status = "True";
    query.setParameter("search", searchkey + '%');
    query.setParameter("status", status);
    return query.getResultList();
}
公共列表过滤器(字符串搜索){
TypedQuery query=em.createQuery(“选择不同的um FROM Details um INNER JOIN um.admin ad WHERE um.name like:search and ad.status=:status”,Details.class);
字符串searchkey=search;
String status=“True”;
setParameter(“search”,searchkey+'%');
query.setParameter(“状态”,status);
返回query.getResultList();
}
其中,Details类将名称作为字符串包含

public class Details implements Serializable {
@Column(name="name")
private String name;
@OneToMany(cascade={CascadeType.ALL})
@JoinColumn(name ="id")
private List<Email> email= new ArrayList<Email>();
 }
公共类详细信息实现可序列化{
@列(name=“name”)
私有字符串名称;
@OneToMany(cascade={CascadeType.ALL})
@JoinColumn(name=“id”)
private List email=new ArrayList();
}
像这样,我想使用搜索作为电子邮件,在喜欢,而不是名称,我想使用电子邮件。现在我尝试下面的代码,但它显示了错误

public List<Details> filterEmail(String search) {
    System.out.println("Email filtering query..");
    TypedQuery<Details> query = em.createQuery("SELECT DISTINCT um FROM Details um INNER JOIN um.admin ad WHERE elements(um.email) like :search and ad.status =:status", Details.class );
    String status = "True";
    query.setParameter("search",'%' +search+ '%');
    query.setParameter("status", status);
    return query.getResultList();
}
公共列表过滤器邮件(字符串搜索){
System.out.println(“电子邮件过滤查询”);
TypedQuery query=em.createQuery(“从详细信息中选择不同的um-in-JOIN-um.admin-ad,其中元素(um.email)如:search和ad.status=:status”,Details.class);
String status=“True”;
setParameter(“search”、“%”+search+“%”);
query.setParameter(“状态”,status);
返回query.getResultList();
}

我怎么用这个?提前感谢。

为什么不这样搜索电子邮件对象的mail属性

SELECT DISTINCT um FROM Details um 
INNER JOIN um.admin ad 
WHERE ad.mailproperty like :search and ad.status =:status