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é.