Корневой контролер в котором дебажуimport com.chvalov.library.Repository.AuthorRepository;
import com.chvalov.library.Repository.BookRepository;
import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
@Log
public class RedirectController {
@Autowired
private AuthorRepository authorRepository;
@Autowired
private BookRepository bookRepository;
@RequestMapping(value = "", method = RequestMethod.GET)
public String baseUrlRedirect(HttpServletRequest request, HttpServletResponse httpServletResponse) {
// Пустота
System.out.println(bookRepository.findByNameContainingIgnoreCaseOrAuthorFioContainingIgnoreCaseOrderByName("а","па"));
System.out.println(authorRepository.findByFioContainingIgnoreCaseOrderByFio("ча"));
// Работает
System.out.println(authorRepository.findOne(25L));
System.out.println(authorRepository.findAll());
System.out.println(bookRepository.findOne(20L));
System.out.println(bookRepository.findAll());
return "ok";
}
}
DAO:
Спойлер (Клилни)AuthDao:
import com.chvalov.library.Entity.Author;
// описывает специфичное поведение для работы с авторами
public interface AuthorDao extends GeneralDAO<Author>{
}
GeneralDao:
import java.util.List;
// общее поведения для всех DAO объектов
public interface GeneralDAO<T>{
List<T> getAll();
List<T> search(String... searchString);
T get(long id); // получение объекта по id
T save(T obj);// save - обновляет или добавляет объект (один метод на 2 действия)
void delete(T object);
}
Проблема в том что при обращении к репозиторию:
import com.chvalov.library.Entity.Author;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository // специальный Spring bean, который помечает интерфейс как Repository
public interface AuthorRepository extends JpaRepository<Author, Long> {// JpaRepository - содержит CRUD функционал + постраничность
// на основании имени метода будет построен Hibernate запрос
List<Author> findByFioContainingIgnoreCaseOrderByFio(String fio);
}
Возвращает пустоту:
bookRepository.findByNameContainingIgnoreCaseOrAuthorFioContainingIgnoreCaseOrderByName("а","па"));
authorRepository.findByFioContainingIgnoreCaseOrderByFio("ча");
Запрос из консоли выполняется на отлично в phpMyAdmin & Navicat
При обращении к репозиторию на прямую все отлично работает:
System.out.println(authorRepository.findOne(25L));
System.out.println(authorRepository.findAll());
В чем может быть проблема ???
maven.pom<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chvalov.library</groupId>
<artifactId>springlibrary</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springlibrary</name>
<description></description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version> <!-- TODO: 1.5.9.RELEASE -->
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
UPD:
Поправил уровень лога, вот результаты выполнения
System.out.println(authorRepository.findOne(25L));
Лог:
2018-01-20 05:12:29.544 DEBUG 51619 --- [nio-8080-exec-1] org.hibernate.SQL :
select
author0_.id as id1_0_0_,
author0_.birthday as birthday2_0_0_,
author0_.fio as fio3_0_0_
from
library.author author0_
where
author0_.id=?
Hibernate:
select
author0_.id as id1_0_0_,
author0_.birthday as birthday2_0_0_,
author0_.fio as fio3_0_0_
from
library.author author0_
where
author0_.id=?
2018-01-20 05:12:29.544 TRACE 51619 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [BIGINT] - [25]
2018-01-20 05:12:29.555 TRACE 51619 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicExtractor : extracted value ([birthday2_0_0_] : [TIMESTAMP]) - [1895-04-04 00:00:00.0]
2018-01-20 05:12:29.556 TRACE 51619 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicExtractor : extracted value ([fio3_0_0_] : [VARCHAR]) - [Николай Лесков]
2018-01-20 05:12:29.562 TRACE 51619 --- [nio-8080-exec-1] org.hibernate.type.CollectionType : Created collection wrapper: [com.chvalov.library.Entity.Author.books#25]
Николай Лесков
А вот уже нужный мне метод (Который возвращает пустоту):
System.out.println(authorRepository.findByFioContainingIgnoreCaseOrderByFio("ча"));
Тут с селектом непонятка:
2018-01-20 05:12:29.383 INFO 51619 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 16 ms
2018-01-20 05:12:29.434 INFO 51619 --- [nio-8080-exec-1] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory
2018-01-20 05:12:29.511 DEBUG 51619 --- [nio-8080-exec-1] org.hibernate.SQL :
/* select
generatedAlias0
from
Author as generatedAlias0
where
upper(generatedAlias0.fio) like upper(:param0)
order by
generatedAlias0.fio asc */ select
author0_.id as id1_0_,
author0_.birthday as birthday2_0_,
author0_.fio as fio3_0_
from
library.author author0_
where
upper(author0_.fio) like upper(?)
order by
author0_.fio asc
Hibernate:
/* select
generatedAlias0
from
Author as generatedAlias0
where
upper(generatedAlias0.fio) like upper(:param0)
order by
generatedAlias0.fio asc */ select
author0_.id as id1_0_,
author0_.birthday as birthday2_0_,
author0_.fio as fio3_0_
from
library.author author0_
where
upper(author0_.fio) like upper(?)
order by
author0_.fio asc
2018-01-20 05:12:29.521 TRACE 51619 --- [nio-8080-exec-1] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [%ча%]
[]
Уже несколько часов не могу понять в чем прикол :(
UPD 2: (Лог MySQL)
Смотрите комментарий к данному вопросу (Ограничение 10к символов)