有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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();
}

其中,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>();
 }

像这样我想使用搜索作为电子邮件,在喜欢而不是名称我想使用电子邮件。现在我尝试下面的代码,但它显示了错误

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();
}

我怎么用这个?提前谢谢


共 (1) 个答案

  1. # 1 楼答案

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

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