在休眠查询中引用没有代码的联接 table

Referencing a join table with no code in a hibernate query

我搜索了所有我能想到的东西并阅读了 hibernate 文档,但未能回答这个问题,所以我转向这里。

我有一个 InboundFaxQueue class。它与我的 InboundFaxDocumentInfo class 存在多对多关系。因此,InboundFaxQueue 具有以下定义。

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "InboundFaxQueue_InboundFaxDocumentInfos",
           joinColumns = @JoinColumn(name = "inbound_fax_queue_id", nullable = false),
           inverseJoinColumns = @JoinColumn(name = "document_id", nullable = false))
@Where(clause = PROCESSED_FILTER)
private final Set<InboundFaxDocumentInfo> faxDocumentInfos = new HashSet<>();

所以现在我想编写一个查询,该查询将 return 具有特定 document_id 的 InboundFaxQueue 对象。我最后一次无法编译的笨拙尝试是这样的:

<query name="FaxDocument.getFaxQueuesContainingDocument">
    <![CDATA[
    SELECT ifq
      FROM com.casenet.domain.docmgmt.InboundFaxQueue ifq
            WHERE ifq.faxDocumentInfos.document_id = :documentId
    ]]>
</query>

不确定下一步要去哪里。

经过大量试验和错误,下面是最终有效的查询。

<query name="FaxDocument.getFaxQueuesContainingDocument">
    <![CDATA[
        SELECT ifq
        FROM InboundFaxQueue AS ifq
        JOIN ifq.faxDocumentInfos AS fdi
            WHERE fdi.id = :documentId
    ]]>
</query>

感谢所有帮助过的人。