はじめまして。エラーから抜け出せずに困っている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
1package jp.co.sss.book.entity; 2 3import java.util.Date; 4 5import javax.persistence.Column; 6import javax.persistence.Entity; 7import javax.persistence.GeneratedValue; 8import javax.persistence.GenerationType; 9import javax.persistence.Id; 10import javax.persistence.JoinColumn; 11import javax.persistence.ManyToOne; 12import javax.persistence.SequenceGenerator; 13import javax.persistence.Table; 14 15@Entity 16@Table(name = "book") 17public class Book { 18 19 @Id 20 private Integer bookId; 21 22 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = 23 "seq_book_gen") 24 25 @SequenceGenerator(name = "seq_book_gen", sequenceName = "seq_book", 26 allocationSize = 1) 27 28 @Column 29 private String bookName; 30 31 @Column 32 private String author; 33 34 @Column 35 private Date publicationDate; 36 37 @Column 38 private Integer stock; 39 40 @ManyToOne 41 @JoinColumn(name="genre_id",referencedColumnName="genreId") 42 private Genre genre; 43 44 @ManyToOne 45 @JoinColumn(name="category_id",referencedColumnName="cateogryId") 46 private Category category; 47 48 public int getBookId() { 49 return bookId; 50 } 51 52 public void setBookId(Integer bookId) { 53 this.bookId = bookId; 54 } 55 56 public String getBookName() { 57 return bookName; 58 } 59 60 public void setBookName(String bookName) { 61 this.bookName = bookName; 62 } 63 64 public String getAuthor() { 65 return author; 66 } 67 68 public void setAuthor(String author) { 69 this.author = author; 70 } 71 72 public Date getPublicationDate() { 73 return publicationDate; 74 } 75 76 public void setPublicationDate(Date publicationDate) { 77 this.publicationDate = publicationDate; 78 } 79 80 public int getStock() { 81 return stock; 82 } 83 84 public void setStock(Integer stock) { 85 this.stock = stock; 86 } 87 88 public Genre getGenre() { 89 return genre; 90 } 91 92 public void setGenre(Genre genre) { 93 this.genre = genre; 94 } 95 96 public Genre getCategory() { 97 return genre; 98 } 99 100 public void setCategory(Category cateogry) { 101 this.category = cateogry; 102 } 103}
■ Book :Repository1
Java
1package jp.co.sss.book.repository; 2 3import java.util.List; 4 5import org.springframework.data.jpa.repository.JpaRepository; 6import org.springframework.stereotype.Component; 7 8import jp.co.sss.book.entity.Book; 9import jp.co.sss.book.entity.Genre; 10 11@Component 12public interface BookRepository extends JpaRepository<Book, Integer>{ 13} 14
■ Category :Entity2
Java
1package jp.co.sss.book.entity; 2 3import javax.persistence.Column; 4import javax.persistence.Entity; 5import javax.persistence.GeneratedValue; 6import javax.persistence.Id; 7import javax.persistence.JoinColumn; 8import javax.persistence.OneToMany; 9import javax.persistence.Table; 10 11@Entity 12@Table(name = "category") 13public class Category { 14 15 @Id 16 @GeneratedValue 17 private Long categoryId; 18 19 @Column 20 private String categoryName; 21 22 @OneToMany 23 @JoinColumn(name="category_id",referencedColumnName="category") 24 25 public Long getCategoryId() { 26 return categoryId; 27 } 28 29 public void setCategoryId(Long categoryId) { 30 this.categoryId = categoryId; 31 } 32 33 public String getCategoryName() { 34 return categoryName; 35 } 36 37 public void setCategoryName(String categoryName) { 38 this.categoryName = categoryName; 39 } 40}
■ Category :Repository2
Java
1package jp.co.sss.book.repository; 2 3import org.springframework.data.jpa.repository.JpaRepository; 4import org.springframework.stereotype.Component; 5 6import jp.co.sss.book.entity.Category; 7 8@Component 9public interface CategoryRepository extends JpaRepository<Category, Long>{ 10}
コンソール画面のエラー
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を判定できない
ようなことだと、理解力が乏しいながらに思いました。‥が、どの箇所が間違っているのか分りません。
考えられる原因、解決方法の候補がありましたらご教授下さいませ。
どうかよろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/07 14:29 編集
2022/06/07 14:10
2022/06/07 19:20 編集