有 Java 编程相关的问题?

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

Java Hibernate/Spring,正在执行部分匹配查询(“包含”)?

我对hibernate还相当陌生,似乎找不到如何实现这一点,也许我在搜索时使用了错误的术语。我正在从我的UI传递一个用户提供的值,在下面的示例中,这是变量testvalue。它用于执行搜索,因此如果用户输入的内容包含在条目的任何位置e.filenametxt,我希望它将该行作为匹配项返回

例如,testvalue = "file1",我希望它能够找到一行e.filenametxt = "file1/someotherinfo/"

String SQL_QUERY = "from EdrmTest e where e.filenametxt is :foreignkeytest ";
Query query = session.createQuery(SQL_QUERY);
query.setParameter("foreignkeytest", testvalue);

任何建议都将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    您还可以使用the Criteria API以编程方式设置这些类型的子句;有时,如果需要添加任何类型的动态逻辑(即根据条件包含某些子句),那么使用此API处理查询比使用基于HQL/字符串的查询要好得多

    Criteria crit = session.createCriteria(EdrmTest.class); //the persistent class goes here
    crit.add( Restrictions.like("filenametxt", testvalue + "%") );
    //execute the query:
    List<EdrmTest> results = (List<EdrmTest>) crit.list();
    
  2. # 2 楼答案

    String SQL_QUERY = "from EdrmTest e where e.filenametxt LIKE :foreignkeytest ";
    Query query = session.createQuery(SQL_QUERY);
    query.setParameter("foreignkeytest", "%" + testvalue + "%");\
    

    试试看。通配符需要在变量中(出于某种原因)