9

IN複数の列値を含む句に一致する結果を取得する Hibernate Query を構築する方法を知る必要があります。

例えば、

Query query=session.createQuery( "from entity e where (e.abc, e.xyz) in (:list)" );
query.setParameterList( "list", list );

などのプリミティブ型のlist基本的なラッパー オブジェクトを含むことができる 2D 配列になります。IntegerString

これは可能ですか?

4

3 に答える 3

3

ここで求めているのは、タプル構文として知られています。Hibernate でサポートされていますが、残念ながら多くのデータベースではサポートされていません ...

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-tuple

于 2013-02-15T15:20:59.130 に答える
-1

エンティティ クラス - 以下で説明するように、@Embeddable クラスで複数の検索可能な列を作成します。

@Entity
@Table(name="channels_store_images")
@Data
public class ChannelsStoreImages {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name="id")
  private Integer id;

  @Embedded
  private CompositeColumns compositeColumns;

  @Embeddable
  @Data
  @AllArgsConstructor
  public static class CompositeColumns {
    @Column(name="partner_id")
    private String partnerId;
    @Column(name="entity_type")
    private String entityType;
    public CompositeColumns(){
    }
  }
}

次に、 @Embeddable クラスのオブジェクトを作成し、以下で説明するようにクエリをヒットします

public List<ChannelsStoreImages> getChannelsStoreImagesByPartnerIdAndType(List<ChannelsStoreImages.CompositeColumns> shopIdAndType) { 
  Query dbQuery =  masterEntityManager.createQuery("From ChannelsStoreImages 
               where compositeColumns IN (:query)",ChannelsStoreImages.class);
  dbQuery.setParameter("query",shopIdAndType);
  List<ChannelsStoreImages> channelsStoreImagesList = dbQuery.getResultList();
  return channelsStoreImagesList;
}
于 2020-01-23T11:27:14.363 に答える