Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 设置列的休眠条件查询_Java_Mysql_Hibernate_Criteria - Fatal编程技术网

Java 设置列的休眠条件查询

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 无法确定如何从“测试”集中访问值 我尝试的另一种

我的数据库中的列tests如下所示:

集合('TEST1'、'TEST2'、'TEST3'、…)

我试图查询集合中的多个值

我试着做了以下几点:

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
这将返回
枚举的
集合
,然后尝试使用上述方法为其创建别名。也检查一下。