我有一些问题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=?)没有结果
我想在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)
但是当我运行测试时,任务仍然被解雇..有没有办法在运行测试时停止执行任务?