コンテキスト: Secret_Agent と Secret_Mission の 2 つのテーブルがあります。@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 で運試しをしています。
もう 1 つの方法は、Crieteria Association を使用することですが、Association は@OneToMany
and @ManyToOne
!
ここで私を助けてください。