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

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

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

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

Spring Boot

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

解決済

Java SpringBootで、MultipartFileクラスを使いDBに画像を保持する

削除済ユーザー
削除済ユーザー

総合スコア0

Java

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

Spring Boot

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

1回答

0評価

0クリップ

2905閲覧

投稿2019/09/17 11:53

編集2022/01/12 10:58

やりたい事

MultipartFileクラスを使うと保持できると知り、JPAを使ってデータベースに画像を保存させて見たく試しているところです。
しかし、org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resourceというエラーが発生し止まってしまっている状態です。

調べた事

entityManagerFactory のエラーが出る場合という事で、https://qiita.com/syunchanp/items/a3be70ca10af18c2db26を参考にさせて頂きましたが、importも間違っていないようでした。

パッケージの管理がおかしいのか、JPAの仕様がそもそもMultipartFileができないのか、Bean保持ができていないのか。
どうか原因と訂正についてご教授ください。

applicationproperties

spring.datasource.url=jdbc:mysql://localhost:3306/sampledb spring.datasource.username=root spring.datasource.password=XXX spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver spring.jpa.database=MYSQL spring.jpa.hibernate.ddl-auto=update logging.level.org.springframework.web = trace

FileUploadForm

package com.example.demo.domain; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import org.springframework.web.multipart.MultipartFile; import lombok.Getter; import lombok.Setter; @Getter @Setter @Entity public class FileUploadForm { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private MultipartFile fileData; }

HomeController

ackage com.example.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import com.example.demo.domain.FileUploadForm; import com.example.demo.service.HomeService; @Controller public class HomeController { @Autowired private HomeService homeService; @RequestMapping("/a") public String index() { return "index"; } @PostMapping(value = "/upload") public String create(@ModelAttribute FileUploadForm file) { homeService.save(file); return "redirect:/index"; } }

HomeService

package com.example.demo.service; import org.springframework.beans.factory.annotation.Autowired; import com.example.demo.domain.FileUploadForm; import com.example.demo.repository.HomeRepository; public class HomeService { @Autowired private HomeRepository homeRepository; public FileUploadForm save(FileUploadForm form) { return homeRepository.save(form); } }

HomeRepository

package com.example.demo.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.example.demo.domain.FileUploadForm; @Repository public interface HomeRepository extends JpaRepository<FileUploadForm, Long> { }

index

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"/> <title>Insert title here</title> </head> <body> <form method="post" enctype="multipart/form-data" th:action="@{/upload}"> <input name="fileData" type="file" /> <input type="submit" /> </form> </body> </html>

エラー内容

rror starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-09-17 18:09:46.821 ERROR 5041 --- [ restartedMain] o.s.boot.SpringApplication : Application run failed

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.MappingException: Could not determine type for: org.springframework.web.multipart.MultipartFile, at table: file_upload_form, for columns: [org.hibernate.mapping.Column(file_data)]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1778) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) ~[spring-beans-5.1.9.RELEASE.jar:5.1.9.RELEASE]

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

rubytomato
rubytomato

2019/09/18 11:03

FileUploadFormクラスにEntityアノテーションが付いていますが、このエンティティクラスに対応するテーブルのcreate table文を質問内容に追記してください。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Java

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

Spring Boot

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