Jak vytvořit like dotazy ve Spring Data

V tomto příspěvku ukáži, jak lze vytvořit sql dotazy s LIKE ve Spring Data bez pomoci @Query anotace. Budeme mít entitu kniha

@Entity
@Table(name = "t_book")
@SequenceGenerator(initialValue = 100, name = "t_book_seq_gen", sequenceName = "t_book_seq")
class BookEntity (
        @Id
        @GeneratedValue(generator = "t_book_seq_gen", strategy = GenerationType.SEQUENCE)
        var id: Long = 0L,

        var author: String = "",

        var publisher: String = "",

        var title: String = "",

        ...
)

a vytvoříme si jpa repository

interface BookRepository: JpaRepository<BookEntity, Long> {
    ...
}

Následující metody:

fun findByTitleContaining(text: String): List<BookEntity>

Vyhledá všechny BookEntity, které v title mají zadaný text (je case sensitive).
Vygenerované SQL obsahuje podmínku LIKE.

fun findByTitleContainingIgnoreCase(text: String): List<BookEntity>

Vyhledá všechny BookEntity, které v title mají zadaný text (není case sensitive).
Vygenerované SQL obsahuje podmínku LIKE s funkcí UPPER() (použita databáze PostgreSQL).

fun findByTitleNotContaining(text: String): List<BookEntity>

Vyhledá všechny BookEntity, které v title nemají zadaný text (je case sensitive).

fun findByTitleNotContainingIgnoreCase(text: String): List<BookEntity>

Vyhledá všechny BookEntity, které v title nemají zadaný text (není case sensitive).

Místo Containing v názvu metody je možné použí i IsContaining nebo Contains. Výsledky budou stejné.

Napsat komentář