Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Spring Boot JPA:Melewati Beberapa Nilai untuk Parameter yang Sama (JPQL)

Karena @Query perlu diperbaiki pada waktu kompilasi menggunakan JPQL atau bahkan kueri asli akan membuat hal-hal semacam ini sulit untuk diterapkan terutama dengan cara yang aman.

Jadi saya menyadari Anda mencari solusi JPQL tetapi ini adalah kesempatan luar biasa untuk belajar dan memanfaatkan Specification antarmuka dan KriteriaQuery JPA. Ini persis untuknya.

Lihatlah repositori berikut:

public interface Table1Repository            // to use specifications in queries 
        extends JpaRepository<Table1, Long>, JpaSpecificationExecutor<Table1> {

    @SuppressWarnings("serial")
    public static Specification<Table1> multiLikeColumn1(List<String> likePatterns) {
        return new Specification<Table1>() {
            @Override
            public Predicate toPredicate(Root<Table1> root, CriteriaQuery<?> query,
                                            CriteriaBuilder criteriaBuilder) {
                Path<String> column1 = root.get("column1");
                // create a Predicate for each "column1 like 'xy%az%' you need
                List<Predicate> predicates = likePatterns.stream()
                    .map(likePattern -> criteriaBuilder.like(column1, likePattern))
                    .collect(Collectors.toList());
                // then "concatenate" list of likes with "OR"
                return criteriaBuilder.or(predicates.toArray(new Predicate[]{}));
            }
        };
    }

}

Ini mungkin terlihat agak rumit tetapi sebenarnya tidak ketika Anda terbiasa dengannya. Penggunaannya sederhana, seperti:

@Resource
private Table1Repository repo;
repo.findAll(Table1Repository.multiLikeColumn1(Arrays.asList("%X%","%Z%")))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jenis penginisialisasi untuk 'System.Data.Entity.Migrations.DbMigrationsConfiguration`1' memberikan pengecualian

  2. Ada simbol seperti  dan sebagainya di database, apa yang harus dilakukan?

  3. Cara Mengatur Set Karakter dan Susunan Tabel di MySQL

  4. Tidak dapat menemukan input type=image value di $_POST

  5. Menggunakan Alias ​​​​dalam Perhitungan SQL