質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

649閲覧

Spring Boot2 DBのエラーに関して

encho

総合スコア182

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/02/09 10:28

Spring徹底入門の書籍を用いてChaprer14のチュートリアルに取り組んでいます。
エンティティを作成後にMYSQLを用いてデータベースを作成し、springを実行したところ下のようなエラーが発生しました。room_idの型に対するエラーだとは見当がつくのですがどのように対処するべきかがわかりません。ご教示いただけると幸いです。

spring Boot 2.2.4
mysql 8.0.18を使用しています。

##発生するエラー

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [room_id] in table [meeting_room]; found [bigint (Types#BIGINT)], but expecting [integer (Types#INTEGER)] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108) ~[spring-context-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868) ~[spring-context-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.2.3.RELEASE.jar:5.2.3.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.4.RELEASE.jar:2.2.4.RELEASE] at mrs.MrsApplication.main(MrsApplication.java:10) ~[classes/:na]

MeetingRoom

1package mrs.domain.model; 2 3import java.io.Serializable; 4 5import javax.persistence.*; 6 7@Entity 8@Table 9public class MeetingRoom implements Serializable { 10 @Id 11 @GeneratedValue(strategy = GenerationType.IDENTITY) 12 private Integer roomId; 13 14 private String roomName; 15 16 public Integer getRoomId() { 17 return roomId; 18 } 19 20 public void setRoomId(Integer roomId) { 21 this.roomId = roomId; 22 } 23 24 public String getRoomName() { 25 return roomName; 26 } 27 28 public void setRoomName(String roomName) { 29 this.roomName = roomName; 30 } 31 32} 33

ReservableRoom

1package mrs.domain.model; 2 3import java.io.Serializable; 4 5import javax.persistence.*; 6 7@Entity 8public class ReservableRoom implements Serializable { 9 @EmbeddedId 10 private ReservableRoomId reservableRoomId; 11 12 @ManyToOne 13 @JoinColumn(name="room_id", insertable=false,updatable = false) 14 @MapsId("roomId") 15 private MeetingRoom meetingRoom; 16 17 public ReservableRoom(ReservableRoomId reservableRoomId) { 18 this.reservableRoomId = reservableRoomId; 19 } 20 21 public ReservableRoom() {} 22 23 public ReservableRoomId getReservableRoomId() { 24 return reservableRoomId; 25 } 26 27 public void setReservableRoomId(ReservableRoomId reservableRoomId) { 28 this.reservableRoomId = reservableRoomId; 29 } 30 31 public MeetingRoom getMeetingRoom() { 32 return meetingRoom; 33 } 34 35 public void setMeetingRoom(MeetingRoom meetingRoom) { 36 this.meetingRoom = meetingRoom; 37 } 38 39} 40

ReservableRoomI

1package mrs.domain.model; 2 3import java.io.Serializable; 4import java.time.LocalDate; 5 6import javax.persistence.*; 7 8@Embeddable 9public class ReservableRoomId implements Serializable { 10 11 private Integer roomId; 12 13 private LocalDate reservedDate; 14 15 public ReservableRoomId(Integer roomId,LocalDate reservedDate) { 16 this.roomId = roomId; 17 this.reservedDate = reservedDate; 18 } 19 20 public ReservableRoomId() {} 21 22 @Override 23 public int hashCode() { 24 final int prime = 31; 25 int result = 1; 26 result = prime * result +((reservedDate == null) ? 0:reservedDate.hashCode()); 27 result = prime * result +((roomId == null) ? 0: roomId.hashCode()); 28 return result; 29 } 30 31 @Override 32 public boolean equals(Object obj) { 33 if(this == obj) return true; 34 if(obj == null) return false; 35 if(getClass() != obj.getClass()) return false; 36 ReservableRoomId other = (ReservableRoomId)obj; 37 if(reservedDate == null) { 38 if(other.reservedDate != null) return false; 39 } else if(!reservedDate.equals(other.reservedDate)) 40 return false; 41 if(roomId == null) { 42 if(other.roomId != null) return false; 43 } else if(!roomId.equals(other.roomId)) 44 return false; 45 return true; 46 47 } 48 49} 50

Reservation

1 package mrs.domain.model; 2 3import java.io.Serializable; 4import java.time.*; 5 6import javax.persistence.*; 7 8@Entity 9public class Reservation implements Serializable { 10 @Id 11 @GeneratedValue(strategy = GenerationType.IDENTITY) 12 private Integer reservationId; 13 14 private LocalTime startTime; 15 16 private LocalTime endTime; 17 18 @ManyToOne 19 @JoinColumns({ @JoinColumn(name="reserved_date"), 20 @JoinColumn(name="room_id") }) 21 private ReservableRoom reservableRoom; 22 23 @ManyToOne 24 @JoinColumn(name="user_id") 25 private User user; 26 27 public Integer getReservationId() { 28 return reservationId; 29 } 30 31 public void setReservationId(Integer reservationId) { 32 this.reservationId = reservationId; 33 } 34 35 public LocalTime getStartTime() { 36 return startTime; 37 } 38 39 public void setStartTime(LocalTime startTime) { 40 this.startTime = startTime; 41 } 42 43 public LocalTime getEndTime() { 44 return endTime; 45 } 46 47 public void setEndTime(LocalTime endTime) { 48 this.endTime = endTime; 49 } 50 51 public ReservableRoom getReservableRoom() { 52 return reservableRoom; 53 } 54 55 public void setReservableRoom(ReservableRoom reservableRoom) { 56 this.reservableRoom = reservableRoom; 57 } 58 59 public User getUser() { 60 return user; 61 } 62 63 public void setUser(User user) { 64 this.user = user; 65 } 66 67} 68

application

1spring.jpa.database=MYSQL 2spring.datasource.url=jdbc:mysql://localhost:3306/mrs 3spring.datasource.username=root 4spring.datasource.password=root 5spring.jpa.hibernate.ddl-auto=validate 6spring.jpa.properties.hibernate.format_sql=true 7spring.datasource.sql-script-encoding=Utf-8 8spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver 9 10spring.datasource.initialization-mode=always 11spring.jpa.open-in-view=true 12

schema.sql

sql

1DROP TABLE IF EXISTS meeting_room CASCADE ; 2DROP TABLE IF EXISTS reservable_room CASCADE ; 3DROP TABLE IF EXISTS reservation CASCADE ; 4DROP TABLE IF EXISTS usr CASCADE ; 5 6CREATE TABLE IF NOT EXISTS meeting_room ( 7 room_id SERIAL NOT NULL, 8 room_name VARCHAR(255) NOT NULL, 9 PRIMARY KEY (room_id) 10); 11CREATE TABLE IF NOT EXISTS reservable_room ( 12 reserved_date DATE NOT NULL, 13 room_id INT(4) NOT NULL, 14 PRIMARY KEY (reserved_date, room_id) 15); 16CREATE TABLE IF NOT EXISTS reservation ( 17 reservation_id SERIAL NOT NULL, 18 end_time TIME NOT NULL, 19 start_time TIME NOT NULL, 20 reserved_date DATE NOT NULL, 21 room_id INT(4) NOT NULL, 22 user_id VARCHAR(255) NOT NULL, 23 PRIMARY KEY (reservation_id) 24); 25CREATE TABLE IF NOT EXISTS usr ( 26 user_id VARCHAR(255) NOT NULL, 27 first_name VARCHAR(255) NOT NULL, 28 last_name VARCHAR(255) NOT NULL, 29 password VARCHAR(255) NOT NULL, 30 role_name VARCHAR(255) NOT NULL, 31 PRIMARY KEY (user_id) 32); 33

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

MeetingRoomのprivate Integer roomId;を~~private Long roomId;~~private BigInteger roomId;としてみてはいかがでしょうか

投稿2020/02/09 13:20

編集2020/02/11 13:40
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/10 00:32

BigIntegerでは?
退会済みユーザー

退会済みユーザー

2020/02/11 13:39

asahina1979 確かにSERIALはUNSIGNEDなので間違っていました 回答を修正します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問