在休眠查询中引用没有代码的联接 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>
感谢所有帮助过的人。
我搜索了所有我能想到的东西并阅读了 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>
感谢所有帮助过的人。