に参加私は、次のエンティティを使用して、私のコンテナインスタンスを確保するためのエンティティは、個別の内部には、私は次のことをしましたHQL
public class Container {
...
@OneToMany
private List<ACLEntry> aclEntries;
}
を休止:
public class ACLEntry {
...
private Long sid;
private boolean principal;
private Integer mask;
}
HQL-クエリは検索のためのように、自動的に作成されます 次のクエリが作成されます。
select container from Container container
inner join container.aclEntries as aclEntry
with bitwise_and (aclEntry.mask, 1) = 1 and
(aclEntry.sid = :userId or aclEntry.sid = :roleId)
この問題は、aclentry結合が2つの結果を返す可能性があり、結果が重複してしまうことになります。
これを解決する方法は誰にもありますか?ネイティブクエリとしてselect distinct
を追加することで
:
内部クエリエンジンを使用してhqlクエリを作成するので、すべてのクエリに影響するため、distinctを追加できません。私は、別名は結合にのみ適用する必要があると思いますか、間違っていますか? –
+1。これが正しい簡単な解決策です。クエリエンジンがそれを処理できない場合は、クエリエンジンを改善します。 –