Java Hibernate/Spring,做部分匹配查询("包含")?

Ric*_*ick 5 java spring hibernate hql

我仍然相当熟悉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);
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏.

Zoi*_*erg 7

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

试试吧.外卡需要在变量中(出于某种原因).


mat*_*t b 6

您还可以使用Criteria API以编程方式设置这些类型的子句; 有时,使用此API处理查询可能会更好,而不是基于HQL/String的查询,如果您需要添加任何类型的动态逻辑(即根据条件包含某些子句).

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();
Run Code Online (Sandbox Code Playgroud)