1

我的休眠实体如下:

@Entity
@Table(name = "EditLocks")
public class EditLock extends AuditableEntity {

    /** The document that is checked out. */
    @OneToOne
    @JoinColumn(name = "documentId", nullable = false)
    private Document document;

文档如下所示:

public class Document extends AuditableEntity {
    /** Type of the document. */
    @ManyToOne
    @JoinColumn(name = "documentTypeId", nullable = false)
    private DocumentType documentType;

基本上我想写的查询是:

Select * from EditLocks el, Document docs, DocumentTypes dt where el.documentId = docs.id and docs.documentTypeId = dt.id and dt.id = 'xysz';

如何使用休眠标准 api 执行此操作?

4

2 回答 2

8

那应该这样做:

Criteria criteria = getSession().createCriteria(EditLock.class);
criteria.createAlias( "document", "document" );
criteria.createAlias( "document.documentType", "documentType" );
criteria.add(Restrictions.eq("documenttype.id", "xyz");

您需要添加别名以访问具有您要查询的属性的对象。

于 2010-08-02T23:54:16.547 回答
0

因此,您似乎只是想获取拥有 DocumentType id = 'xyz' 的文档的 EditLock。我假设 Document 和 DocumentType 具有标准的 Hibernate 映射:

Criteria crit = getSession().createCriteria(EditLock.class);
crit.add(Restrictions.eq("document.documenttype.id", "xyz");

我认为 Hibernate 应该能够为你找出连接。

于 2010-08-02T16:30:51.473 回答