エンティティ クラス - 以下で説明するように、@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;
}