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

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

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

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

Java

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Spring Boot

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

解決済

【Spring Framework】【DB】【外部参照】entityManagerFactoryのエラー解決

kuro0607
kuro0607

総合スコア1

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

Java

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Spring Boot

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

1回答

0評価

0クリップ

212閲覧

投稿2022/06/06 23:12

編集2022/06/08 04:20

はじめまして。エラーから抜け出せずに困っているSpringBoot初心者にご尽力いただけますと幸いです。

具体的にはOracle SQL DeveloperにてCategoryテーブル、Eclipse にてEntity / Repositoryを作成したのですが、外部参照が上手くいかないという状況です。
前提としてBookテーブル、Genreテーブルの紐づけは成功しています。
(HTMLにてジャンル名で検索結果を出力できます)

該当のテーブル

■ Book

COLUMN_NAMEDATA_TYPECOLUMN_ID
BOOK_IDNUMBER(5,0)1
BOOK_NAMEVARCHAR2(60 CHAR)2
...省略...
GENRE_IDNUMBER(2,0)6
CATEGORY_IDNUMBER(2,0)7
  • PRIMARY KEY("BOOK_ID")
  • "BOOK_NAME" IS NOT NULL
  • "GENRE_ID" IS NOT NULL
  • FOREIGN KEY ("GENRE_ID")
  • "CATEGORY_ID" IS NOT NULL
  • FOREIGN KEY ("CATEGORY_ID")

■ Genre

COLUMN_NAMEDATA_TYPECOLUMN_ID
GENRE_IDNUMBER(2,0)1
GENRE_NAMEVARCHAR2(30 CHAR)2
  • "GENRE_NAME" IS NOT NULL
  • PRIMARY KEY("GENRE_ID")

■ Category

COLUMN_NAMEDATA_TYPECOLUMN_ID
CATEGORY_IDNUMBER(2,0)1
CATEGORY_NAMEVARCHAR2(30 CHAR)2
  • "CATEGORY_NAME" IS NOT NULL
  • PRIMARY KEY("CATEGORY_ID")

該当のソースコード

■ Book :Entity1

Java

package jp.co.sss.book.entity; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.SequenceGenerator; import javax.persistence.Table; @Entity @Table(name = "book") public class Book { @Id private Integer bookId; @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_book_gen") @SequenceGenerator(name = "seq_book_gen", sequenceName = "seq_book", allocationSize = 1) @Column private String bookName; @Column private String author; @Column private Date publicationDate; @Column private Integer stock; @ManyToOne @JoinColumn(name="genre_id",referencedColumnName="genreId") private Genre genre; @ManyToOne @JoinColumn(name="category_id",referencedColumnName="cateogryId") private Category category; public int getBookId() { return bookId; } public void setBookId(Integer bookId) { this.bookId = bookId; } public String getBookName() { return bookName; } public void setBookName(String bookName) { this.bookName = bookName; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Date getPublicationDate() { return publicationDate; } public void setPublicationDate(Date publicationDate) { this.publicationDate = publicationDate; } public int getStock() { return stock; } public void setStock(Integer stock) { this.stock = stock; } public Genre getGenre() { return genre; } public void setGenre(Genre genre) { this.genre = genre; } public Genre getCategory() { return genre; } public void setCategory(Category cateogry) { this.category = cateogry; } }

■ Book :Repository1

Java

package jp.co.sss.book.repository; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import jp.co.sss.book.entity.Book; import jp.co.sss.book.entity.Genre; @Component public interface BookRepository extends JpaRepository<Book, Integer>{ }

■ Category :Entity2

Java

package jp.co.sss.book.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name = "category") public class Category { @Id @GeneratedValue private Long categoryId; @Column private String categoryName; @OneToMany @JoinColumn(name="category_id",referencedColumnName="category") public Long getCategoryId() { return categoryId; } public void setCategoryId(Long categoryId) { this.categoryId = categoryId; } public String getCategoryName() { return categoryName; } public void setCategoryName(String categoryName) { this.categoryName = categoryName; } }

■ Category :Repository2

Java

package jp.co.sss.book.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import jp.co.sss.book.entity.Category; @Component public interface CategoryRepository extends JpaRepository<Category, Long>{ }

コンソール画面のエラー

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 org.hibernate.MappingException: Unable to find column with logical name: cateogryId in org.hibernate.mapping.Table(category) and its related supertables and secondary tables

  • entityManagerFactoryが作れずにエラーを吐いている
  • categoryIdの論理名が見つからない
  • categoryテーブルと関連するテーブルが見つからない

BookテーブルがcategoryIdを判定できない
ようなことだと、理解力が乏しいながらに思いました。‥が、どの箇所が間違っているのか分りません。

考えられる原因、解決方法の候補がありましたらご教授下さいませ。
どうかよろしくお願い致します。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Entity Framework

Entity Frameworkは、.NET Framework 3.5より追加されたデータアクセス技術。正式名称は「ADO.NET Entity Framework」です。データベースエンジンに依存しておらず、データプロバイダの変更のみで様々なデータベースに対応できます。

Java

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

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Spring Boot

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