1

私の場合、次のような 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;
     }

および 2 番目のエンティティ:

    @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 オブジェクトを使用しようとしていましたが、そのクエリを正確に構築する方法がわかりません。助けてください

4

1 に答える 1

0

これは、標準 SQL でも条件を使用しても実行できません。2 つの異なる制限に分割するSession.SQLQuery()か、特定の RDBMS を使用する場合は を使用する必要があります (説明については、 SQL WHERE.. IN 句の複数の列を参照してください) 。

于 2013-08-26T18:10:57.520 に答える