Java 设置列的休眠条件查询
我的数据库中的列tests如下所示: 集合('TEST1'、'TEST2'、'TEST3'、…) 我试图查询集合中的多个值 我试着做了以下几点:Java 设置列的休眠条件查询,java,mysql,hibernate,criteria,Java,Mysql,Hibernate,Criteria,我的数据库中的列tests如下所示: 集合('TEST1'、'TEST2'、'TEST3'、…) 我试图查询集合中的多个值 我试着做了以下几点: criteria.createAlias("tests", "test"); criteria.add(Restrictions.eq("test", "TEST1")); 但有以下例外: org.hibernate.QueryException: not an association: tests 无法确定如何从“测试”集中访问值 我尝试的另一种
criteria.createAlias("tests", "test");
criteria.add(Restrictions.eq("test", "TEST1"));
但有以下例外:
org.hibernate.QueryException: not an association: tests
无法确定如何从“测试”集中访问值
我尝试的另一种方法是以下方法,因为我需要比较集合中的多个值,但也不起作用:
Criterion c1 = Restrictions.like("tests", EnumSet.of("TEST1"));
Criterion c2 = Restrictions.like("tests", EnumSet.of("TEST2"));
criteria.add (Restrictions.or(c1, c2));
请考虑,您已将标准创建为
Criteria criteria = session.createCriteria(TestCriteria.class, "testCriteria");
&TestCriteria
类具有名为tests
的属性。然后,您可以为相同的创建别名
criteria.createAlias("testCriteria.tests", "test");
criteria.add(Restrictions.eq("test", "TEST1"));
来自:
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
希望这能有所帮助。考虑一下,您已经创建了以下标准:
Criteria criteria = session.createCriteria(TestCriteria.class, "testCriteria");
&TestCriteria
类具有名为tests
的属性。然后,您可以为相同的创建别名
criteria.createAlias("testCriteria.tests", "test");
criteria.add(Restrictions.eq("test", "TEST1"));
来自:
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
希望这有帮助。展示您的Java实体以及它们在hibernate中的映射方式?看看我的答案。希望它能帮助你。展示你的Java实体以及它们在hibernate中是如何映射的?看看我的答案。我不知道为什么会出现这个错误,因为“tests”是数据库表和实体类的一部分。是否有其他解决问题的方法?请向我展示您的实体和数据库结构,以便更好地理解。
private EnumSet tests
在我的实体TestCriteria
类中声明,其中testnum
包含test1、test2、test3…
因为枚举对象和测试列是集(test1、test2、test3…)
我不确定这是否有效,但你可以试试。使用Set s=Collections.synchronizedSet(EnumSet.allOf(TestEnum.class)),创建一个Set
这将返回枚举的集合
,然后尝试使用上述方法为其创建别名。还要检查。我不确定为什么会出现此错误,因为“tests”是数据库表以及实体类的一部分。是否有其他解决问题的方法?请向我展示您的实体和数据库结构,以便更好地理解。private EnumSet tests
在我的实体TestCriteria
类中声明,其中testnum
包含test1、test2、test3…
因为枚举对象和测试列是集(test1、test2、test3…)
我不确定这是否有效,但你可以试试。使用Set s=Collections.synchronizedSet(EnumSet.allOf(TestEnum.class)),创建一个Set
这将返回枚举的集合
,然后尝试使用上述方法为其创建别名。也检查一下。