こんにちは、私は現在springbootでwebアプリを作成するために、掲題の書籍でデータベースを勉強中です。
3.5演習リポジトリーの作成で詰まってしまっています。
以前もentitiymanegerを使用して作成した際に詰まってしまったのですが、その時はspring.datasource.initialization-mode=alwaysとapplication.propertiesに記載し、データを取得することが出来ました。が、今回は出来ません。
以前の質問:Spring JPAでデータベースを取ってこれない(参考書籍:Spring Data JPAプログラミング入門)
起こっている事:
実行は成功しているのですが、データベースのVALUESを取ってこれません。
実際の値画像:
期待値:
resorses配下のdata.sqlが読み込まれて出力される
sql
1INSERT INTO employee 2 ( no, birthday, first_name, last_name, mail_address, sex ) 3 VALUES 4 (1,'1980-01-31','太郎','山田','taro.yamada@mail.com','male'); 5INSERT INTO employee 6 ( no, birthday, first_name, last_name, mail_address, sex ) 7 VALUES 8 (2,'1985-02-10','一郎','鈴木','ichiro.suzuki@mail.com','male'); 9INSERT INTO employee 10 ( no, birthday, first_name, last_name, mail_address, sex ) 11 VALUES 12 (3,null,'花子','石井',null,'female');
application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/userdata characterEncoding=UTF-8 spring.datasource.username=root spring.datasource.password=newpass spring.datasource.class-name=com.mysql.jdbc.Driver spring.datasource.sqlScriptEncoding=UTF-8 spring.jpa.database=MYSQL spring.thymeleaf.mode=HTML spring.thymeleaf.cache=false spring.datasource.initialization-mode=always spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=create logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
EmployeeController:
package com.spring.data.jpa.example.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.spring.data.jpa.example.service.EmployeeService; @Controller @RequestMapping("employee") public class EmployeeController { @Autowired private EmployeeService employeeService; @RequestMapping("list") public String list(Model model) { model.addAttribute("employees", employeeService.getEmployeeList()); return "employee/list"; } }
Employee:
package com.spring.data.jpa.example.repository.entity; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.Id; import lombok.Getter; import lombok.Setter; import lombok.ToString; @Entity @Getter @Setter @ToString public class Employee implements Serializable { private static final long serialVersionUID = 1L; /** * 性別の列挙 */ public static enum Sex { male, female } /** 社員番号 */ @Id @GeneratedValue private Integer no; /** 名前 */ @Column(length = 20, nullable = false) private String firstName; /** 苗字 */ @Column(length = 20, nullable = false) private String lastName; /** 性別 */ @Column(length = 10) @Enumerated(EnumType.STRING) private Sex sex; /** 生年月日 */ private java.sql.Date birthday; /** メールアドレス */ @Column(unique = true) private String mailAddress; }
EmployeeRepository
package com.spring.data.jpa.example.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.spring.data.jpa.example.repository.entity.Employee; @Repository public interface EmployeeRepository extends JpaRepository<Employee, Integer> { }
EmployeeService
package com.spring.data.jpa.example.service; import java.util.List; import com.spring.data.jpa.example.repository.entity.Employee; public interface EmployeeService { public List<Employee> getEmployeeList(); }
EmployeeServiceImpl
package com.spring.data.jpa.example.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.spring.data.jpa.example.repository.EmployeeRepository; import com.spring.data.jpa.example.repository.entity.Employee; @Service @Transactional(readOnly = true) public class EmployeeServiceImpl implements EmployeeService { @Autowired private EmployeeRepository employeeRepository; @Override public List<Employee> getEmployeeList() { return employeeRepository.findAll(); } }
ログ:
Hibernate: drop table if exists employee 2019-01-20 14:55:38.171 DEBUG 10990 --- [ main] org.hibernate.SQL : drop table if exists hibernate_sequence Hibernate: drop table if exists hibernate_sequence 2019-01-20 14:55:38.187 DEBUG 10990 --- [ main] org.hibernate.SQL : create table employee (no integer not null, birthday date, first_name varchar(20) not null, last_name varchar(20) not null, mail_address varchar(255), sex varchar(10), primary key (no)) engine=MyISAM Hibernate: create table employee (no integer not null, birthday date, first_name varchar(20) not null, last_name varchar(20) not null, mail_address varchar(255), sex varchar(10), primary key (no)) engine=MyISAM 2019-01-20 14:55:38.217 DEBUG 10990 --- [ main] org.hibernate.SQL : create table hibernate_sequence (next_val bigint) engine=MyISAM Hibernate: create table hibernate_sequence (next_val bigint) engine=MyISAM 2019-01-20 14:55:38.234 DEBUG 10990 --- [ main] org.hibernate.SQL : insert into hibernate_sequence values ( 1 ) Hibernate: insert into hibernate_sequence values ( 1 ) 2019-01-20 14:55:38.236 DEBUG 10990 --- [ main] org.hibernate.SQL : alter table employee add constraint UK_juipuvrjn0ygo4oe6qtu9jyuj unique (mail_address) Hibernate: alter table employee add constraint UK_juipuvrjn0ygo4oe6qtu9jyuj unique (mail_address) 2019-01-20 14:55:38.258 INFO 10990 --- [ main] o.h.t.schema.internal.SchemaCreatorImpl : HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@574059d5' 2019-01-20 14:55:38.260 INFO 10990 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2019-01-20 14:55:38.683 INFO 10990 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2019-01-20 14:55:38.722 WARN 10990 --- [ main] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning 2019-01-20 14:55:38.987 INFO 10990 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2019-01-20 14:55:38.989 INFO 10990 --- [ main] c.s.d.j.e.PracticeSpringDb2Application : Started PracticeSpringDb2Application in 3.746 seconds (JVM running for 4.546) 2019-01-20 14:56:04.591 INFO 10990 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2019-01-20 14:56:04.591 INFO 10990 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2019-01-20 14:56:04.599 INFO 10990 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 8 ms 2019-01-20 14:56:04.669 INFO 10990 --- [nio-8080-exec-1] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory 2019-01-20 14:56:04.739 DEBUG 10990 --- [nio-8080-exec-1] org.hibernate.SQL : select employee0_.no as no1_0_, employee0_.birthday as birthday2_0_, employee0_.first_name as first_na3_0_, employee0_.last_name as last_nam4_0_, employee0_.mail_address as mail_add5_0_, employee0_.sex as sex6_0_ from employee employee0_ Hibernate: select employee0_.no as no1_0_, employee0_.birthday as birthday2_0_, employee0_.first_name as first_na3_0_, employee0_.last_name as last_nam4_0_, employee0_.mail_address as mail_add5_0_, employee0_.sex as sex6_0_ from employee employee0_
環境:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.22 |
+-----------+
1 row in set (0.02 sec)

