Hibernate Criteria查询Set列

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)

OO7*_*OO7 5

考虑一下,您已创建标准

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)

来自Hibernate Docs:

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)

希望这可以帮助.