gee*_*ink 1 java mysql hibernate criteria
我的数据库中的列测试如下所示:
set('TEST1','TEST2','TEST3',....)
我试图查询集合中的多个值.
我尝试过以下操作:
criteria.createAlias("tests", "test");
criteria.add(Restrictions.eq("test", "TEST1"));
Run Code Online (Sandbox Code Playgroud)
但得到以下例外:
org.hibernate.QueryException: not an association: tests
Run Code Online (Sandbox Code Playgroud)
无法弄清楚如何从"测试"集中访问值.
我尝试的另一种方式是以下,因为我需要比较集合中的多个值,但它也不起作用:
Criterion c1 = Restrictions.like("tests", EnumSet.of("TEST1"));
Criterion c2 = Restrictions.like("tests", EnumSet.of("TEST2"));
criteria.add (Restrictions.or(c1, c2));
Run Code Online (Sandbox Code Playgroud)
考虑一下,您已创建标准
Criteria criteria = session.createCriteria(TestCriteria.class, "testCriteria");
Run Code Online (Sandbox Code Playgroud)
&TestCriteriaclass有属性命名tests.然后你可以创建相同的别名
criteria.createAlias("testCriteria.tests", "test");
criteria.add(Restrictions.eq("test", "TEST1"));
Run Code Online (Sandbox Code Playgroud)
Criteria createAlias(String associationPath,
String alias)
throws HibernateException
Join an association, assigning an alias to the joined association.
Functionally equivalent to createAlias(String, String, JoinType ) using
JoinType.INNER_JOIN for the joinType.
Parameters:
associationPath - A dot-seperated property path
alias - The alias to assign to the joined association (for later reference).
Returns:
this (for method chaining)
Throws:
HibernateException - Indicates a problem creating the sub criteria
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |