Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate/Spring,正在执行部分匹配查询(“包含”)?_Java_Hibernate_Spring_Hql - Fatal编程技术网

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

Java Hibernate/Spring,正在执行部分匹配查询(“包含”)?,java,hibernate,spring,hql,Java,Hibernate,Spring,Hql,我对hibernate还相当陌生,似乎找不到如何实现这一点,也许我在搜索时使用了错误的术语。我正在从我的UI传递一个用户提供的值,在下面的示例中,这是变量testvalue。它用于执行搜索,因此如果用户输入的内容包含在条目e.filenametxt中的任何位置,我希望它将该行作为匹配项返回 例如,testvalue=“file1”,我希望它能够找到一行e.filenametx=“file1/someotherinfo/” 任何建议都将不胜感激 String SQL_QUERY = "from E

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

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

任何建议都将不胜感激

String SQL_QUERY = "from EdrmTest e where e.filenametxt LIKE :foreignkeytest ";
Query query = session.createQuery(SQL_QUERY);
query.setParameter("foreignkeytest", "%" + testvalue + "%");\
试试看。通配符需要在变量中(出于某种原因)。

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

Criteria crit=session.createCriteria(EdrmTest.class)//持久类在这里
crit.add(限制,如(“filenametx”,testvalue+“%”);
//执行查询:
列表结果=(列表)crit.List();

同样有效,文本更少,程序化程度更高,但确实有效。如果您希望不区分大小写,并且希望在任何地方匹配,请参阅本文+1感谢您指出“%”需要在参数中这在我读过的任何文档中都不清楚,我无法让它工作。作为对答案的补充,我想提到一个叫做hibernate搜索的东西,它在封面下使用lucene。它解决了同样的问题,但功能更强大,可扩展性更强。
String SQL_QUERY = "from EdrmTest e where e.filenametxt LIKE :foreignkeytest ";
Query query = session.createQuery(SQL_QUERY);
query.setParameter("foreignkeytest", "%" + testvalue + "%");\
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();