はじめまして。エラーから抜け出せずに困っているSpringBoot初心者にご尽力いただけますと幸いです。
具体的にはOracle SQL DeveloperにてCategoryテーブル、Eclipse にてEntity / Repositoryを作成したのですが、外部参照が上手くいかないという状況です。
前提としてBookテーブル、Genreテーブルの紐づけは成功しています。
(HTMLにてジャンル名で検索結果を出力できます)
該当のテーブル
■ Book
COLUMN_NAME | DATA_TYPE | COLUMN_ID |
---|---|---|
BOOK_ID | NUMBER(5,0) | 1 |
BOOK_NAME | VARCHAR2(60 CHAR) | 2 |
... | 省略 | ... |
GENRE_ID | NUMBER(2,0) | 6 |
CATEGORY_ID | NUMBER(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_NAME | DATA_TYPE | COLUMN_ID |
---|---|---|
GENRE_ID | NUMBER(2,0) | 1 |
GENRE_NAME | VARCHAR2(30 CHAR) | 2 |
- "GENRE_NAME" IS NOT NULL
- PRIMARY KEY("GENRE_ID")
■ Category
COLUMN_NAME | DATA_TYPE | COLUMN_ID |
---|---|---|
CATEGORY_ID | NUMBER(2,0) | 1 |
CATEGORY_NAME | VARCHAR2(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を判定できない
ようなことだと、理解力が乏しいながらに思いました。‥が、どの箇所が間違っているのか分りません。
考えられる原因、解決方法の候補がありましたらご教授下さいませ。
どうかよろしくお願い致します。
まだ回答がついていません
会員登録して回答してみよう