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

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

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

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

Spring Boot

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

Q&A

解決済

1回答

11474閲覧

springboot mappingエラー

Yoshi--

総合スコア62

Java

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

Spring Boot

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

0グッド

0クリップ

投稿2017/07/05 00:32

編集2017/07/05 01:11

User

java

1package com.example.konkatsu.domain; 2 3import javax.persistence.Entity; 4import javax.persistence.FetchType; 5import javax.persistence.GeneratedValue; 6import javax.persistence.Id; 7import javax.persistence.JoinColumn; 8import javax.persistence.ManyToOne; 9import javax.persistence.Table; 10 11import lombok.AllArgsConstructor; 12import lombok.Data; 13import lombok.NoArgsConstructor; 14 15@Data //getterメソッド・setterメソッドをコード上に直接書かなくて済む 16@NoArgsConstructor 17@AllArgsConstructor 18@Entity //JPAに管理してもらう 19@Table(name = "users") //接続するテーブルを指定 20public class User { 21 22 @Id //変数idをプライマリーキーに指定 23 @GeneratedValue //自動採番される 24 private Integer userId; 25 private String mail; 26 private String pass; 27 @ManyToOne(fetch = FetchType.LAZY) //Usersとprofileを1対多の関係にするため@OneToManyをつけるcascade = CascadeType.ALLを設定することでUserの操作をprofileにも伝播できる 28 @JoinColumn(nullable = true, name = "userId") 29 private Profile profile; 30}

Profile

java

1//profileテーブルとマッピングさせる 2 3package com.example.konkatsu.domain; 4 5import java.sql.Date; 6import java.util.List; 7 8import javax.persistence.CascadeType; 9import javax.persistence.Entity; 10import javax.persistence.FetchType; 11import javax.persistence.GeneratedValue; 12import javax.persistence.Id; 13import javax.persistence.OneToMany; 14import javax.persistence.Table; 15 16import lombok.AllArgsConstructor; 17import lombok.Data; 18import lombok.NoArgsConstructor; 19import lombok.ToString; 20 21@Data 22@NoArgsConstructor //デフォルトコンストラクタも必要な場合 23@AllArgsConstructor //すべてのフィールドを引数に持つコンストラクタを自動生成 24@Entity //エンティティ(一単位として扱われるデータのまとまり)であることを示す。指定したクラス名がテーブルとマッピングされる 25@Table(name = "profile") //接続するテーブルを指定 26@ToString(exclude = "users") //Userクラスには対応するProfileクラスのフィールドを追加 27public class Profile { 28 @Id //主キー 29 @GeneratedValue //自動採番される 30 private Integer userId; 31 private Integer genderId; 32 private String name; 33 private Date birthday; 34 private Integer height; 35 private Integer occupationId; 36 private Integer income; 37 private String text; 38 private byte[] image; 39 @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "profile") //mappedBy属性に関連先でのプロパティ名を指定 40 41 //@ManyToOne(fetch = FetchType.LAZY) //@ManyToOneで多対1の関係にする 42 //@JoinColumn(nullable = true, name = "userId") //外部キーのカラム名の指定 43 private List<User> users; 44 45 46} 47

イメージ説明

UsersとProfileを結合させて
値を表示したいのですが
次のようなエラー出てしまいます

java

1 2 3org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory 4 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 5 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 6 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 7 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 8 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 9 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 10 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 11 at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE] 12 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE] 13 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE] 14 at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] 15 at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] 16 at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] 17 at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] 18 at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] 19 at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] 20 at com.example.konkatsu.KonkatsuApplication.main(KonkatsuApplication.java:10) [classes/:na] 21 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121] 22 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121] 23 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121] 24 at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121] 25 at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-1.5.4.RELEASE.jar:1.5.4.RELEASE] 26Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory 27 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 28 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:882) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 29 at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE] 30 at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE] 31 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE] 32 at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359) ~[spring-orm-4.3.9.RELEASE.jar:4.3.9.RELEASE] 33 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 34 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 35 ... 21 common frames omitted 36Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.example.konkatsu.domain.User column: user_id (should be mapped with insert="false" update="false") 37 at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:830) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 38 at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:848) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 39 at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:870) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 40 at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:605) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 41 at org.hibernate.mapping.RootClass.validate(RootClass.java:265) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 42 at org.hibernate.boot.internal.MetadataImpl.validate(MetadataImpl.java:329) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 43 at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:443) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final] 44 at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final] 45 ... 27 common frames omitted 46

どこを直せば良いのでしょうか??

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージにそのままが書いてありますね。

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.example.konkatsu.domain.User column: user_id (should be mapped with insert="false" update="false")

User エンティティの user_id が繰り返しマッピングされているとの事

java

1public class User { 2 3 @Id //変数idをプライマリーキーに指定 4 @GeneratedValue //自動採番される 5 private Integer userId; 6 private String mail; 7 private String pass; 8 @ManyToOne(fetch = FetchType.LAZY) //Usersとprofileを1対多の関係にするため@OneToManyをつけるcascade = CascadeType.ALLを設定することでUserの操作をprofileにも伝播できる 9 @JoinColumn(nullable = true, name = "userId") 10 private Profile profile; 11}

JoinColumn の name が userId だからですね。User 内でかぶらない違う名前を付けたうえで referencedColumnName に user_id を付けてみてはどうでしょうか。

投稿2017/07/05 01:46

mattn

総合スコア5030

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問