Hibernate Criteria选择使用嵌入对象(元组)

时间:2013-08-26 15:32:17

标签: java sql hibernate embeddable

在我的情况下,我有一个SQL查询,如下所示:

select * from event_instance where (object_id, object_type) in 
    (<LIST OF TUPLES RETRIEVED FROM SUBQUERY>);

我想在Hibernate Entities上映射它,我对此查询有疑问。我的映射看起来像这样:

     @Entity
     @Table(name="event_instance")
     public class AuditEvent {
         <OTHER_FIELDS>

         @Column( name = "object_type", nullable = false)
         private String objectType;

         @Column( name ="object_id" , nullable = false)
         private Integer objectId;
     }

和第二个实体:

    @Entity
    @Table(schema = "els" ,name = "acg_objects")
    public class AcgObject implements Serializable{

        @Id
        @Column(name = "acg_id")
        private String acgId;

        @Id
        @Column(name="object_type")
        private String objectType;

        @Id
        @Column(name="object_id")
        private Integer objectId;

        <OTHER FIELDS>

}

我已经运行了获取AcgObjects的查询,而对于我的DAO,我只获得了List,我想要做的就是使用以下条件查询一个标题:

      crit.add(Restrictions.in("objectType,objectId",<List of tuples>);

有可能吗?我试图使用@Embedded对象,但不知道如何为它构造一个查询。请帮忙

1 个答案:

答案 0 :(得分:0)

您不能在标准SQL中使用,也不能使用标准;如果要使用特定的RDBMS,则必须分为两个不同的限制或使用Session.SQLQuery()(查看SQL WHERE.. IN clause multiple columns以获得解释)