小编mar*_*ili的帖子

Hibernate Criteria查询集合包含某些元素

我有一些问题Criteria.我有一个Job包含一组的类Skills.

当我想要过滤包含2种技能的作业时,问题就出现了,例如,包含id为1和3的技能的所有作业.

现在我有这个:

for (Skill skill : job.getSkills()) {
    ids.add(skill.getId());
}

criteria.createAlias("skills", "skill");
criteria.add(Restrictions.in("skill.id", ids));
Run Code Online (Sandbox Code Playgroud)

但它给了我包含1或3技能的工作,而不仅仅是那些兼具技能的人.我怎样才能做到这一点?

更新:

criteria.createAlias("Job.skills", "skill");    
Conjunction and = Restrictions.conjunction();   

for (Skill skill : job.getSkills()) {
    and.add(Restrictions.eq("skill.id", skill.getId()));
}
criteria.add(and);
Run Code Online (Sandbox Code Playgroud)

我试过这个,但是sql and (skill1_.ID=? and skill1_.ID=?)没有结果

java spring criteria-api

5
推荐指数
1
解决办法
1万
查看次数

在Junit测试中禁用Spring @EnableScheduling

我想在Spring测试中禁用@Schedule,但我找不到办法.

我试图为测试环境制作不同的配置类,但仍然会触发任务.这是配置:

@Configuration
@EnableTransactionManagement
@EnableScheduling
@ComponentScan({"de.package"})
@PropertySource(name="application.properties", value="classpath:application.properties")
public class PersistenceJPAConfig {
...
}
Run Code Online (Sandbox Code Playgroud)

这是测试环境配置.刚删除@EnableScheduling注释

@Configuration
@EnableTransactionManagement
@ComponentScan({"de.package"})
@PropertySource(name="application.properties", value="classpath:application.properties")
public class PersistenceJPATestConfig {
...
}
Run Code Online (Sandbox Code Playgroud)

在测试我使用:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { PersistenceJPATestConfig.class }, loader = AnnotationConfigContextLoader.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class GetArticlesTest {
...
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行测试时,任务仍然被解雇..有没有办法在运行测试时停止执行任务?

java junit spring spring-mvc

2
推荐指数
1
解决办法
1920
查看次数

标签 统计

java ×2

spring ×2

criteria-api ×1

junit ×1

spring-mvc ×1