上下文:我有两个表 Secret_Agent 和 Secret_Mission。两者之间存在@ManyToMany
关系,因为可以给许多秘密特工执行相同的秘密任务,并且可以给同一个秘密特工许多秘密任务。
Table SECRET_AGENT
Columns SecretAgentId, SecrentAgentName
Table SECRET_MISSION
Columns SecretMissionId, SecrentMissionName
JOIN Table
SECRET_AGENT_MISSION
Columns: SecretAgentId,SecretMissionId
Java 代码:
class Secret_Agent {
.
.
.
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "SECRET_AGENT_MISSION", joinColumns = { @JoinColumn(name = "SecretAgentId") }, inverseJoinColumns = { @JoinColumn(name = "SecretMissionId") }
private List <Secret_Mission> missions;
.
.
.
}
class Secret_Mission {
.
.
.
@ManyToMany(mappedBy = "missions")
private List <Secret_Agent> agents;
.
.
.
}
问题:我试图在下面提到的代码中获取所有没有通过 Hibernate Criteria 分配秘密任务的秘密特工:
Criteria criteria = session.createCriteria(Secret_Agent.class);
criteria.add(Restrictions.isNull("missions"));
但是,它不起作用。同时,我正在用 Projections 和 QBE 试试运气。
另一种方法是使用 Crieteria Association,但 Association 只能与@OneToMany
and一起使用@ManyToOne
!
请在这里帮助我。