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

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

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

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

Spring Boot

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

Q&A

1回答

255閲覧

Spring boot 同じEntity同士でのテーブル結合

abchdd

総合スコア1

Java

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

Spring Boot

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

0グッド

0クリップ

投稿2023/05/25 03:53

実現したいこと

Employee EntityのフィールドであるbossIdをもとにテーブル結合し上司情報を取得したい

前提

Spring boot で従業員情報を保存するEntityを作成中です。
Employee entity には BranchId,DepartmentIdなどがありそれらは
https://qiita.com/wataru908/items/f30332d48917c38220d5
こちらのリンクに書いてあることをまねたらうまく
部署情報、支社情報を取得できました。

発生している問題・エラーメッセージ

部署情報などを取得するのと同じようにBossIdから上司情報を取得
しようとしたのですがうまくいきません。
BossIdは上司に該当するEmployeeのEmpIdが入っています。

該当のソースコード

Java

1 2/** 3 * MST_EmployeeのENTITY 4 */ 5@Entity 6@Table(name = "MST_Employee") 7@Getter 8@Setter 9@Data 10public class MST_Employee implements Serializable { 11 12 private static final long serialVersionUID = 4211189331000162686L; 13 14 /** 従業員ID */ 15 @Id 16 @GeneratedValue(strategy = GenerationType.IDENTITY) 17 @Column(name = "empId") 18 private int empId; 19 20 /** 支店ID */ 21 @ManyToOne 22 @JoinColumn(name = "branchid") 23 private MST_Branch branch; 24 25 @Column(name = "branchId") 26 private int branchId; 27 28 /** 部署ID */ 29 @ManyToOne 30 @JoinColumn(name = "departmentid") 31 private MST_Department department; 32 33 @Column(name = "departmentId") 34 private int departmentId; 35 36 /** 従業員No */ 37 @Column(name = "empNo") 38 private int empNo; 39 /** 従業員名 */ 40 @Column(name = "fullName", nullable = false) 41 @NotBlank(message = "フルネームは必須です") 42 private String fullName; 43 /** 従業員かな */ 44 @Column(name = "kanaName", nullable = false) 45 @NotBlank(message = "名前の読みは必須です") 46 private String kanaName; 47 /** ログインID */ 48 @Column(name = "loginId", nullable = false) 49 @NotBlank(message = "LOGINIDは必ず設定してください") 50 private String loginId; 51 /** パスワード */ 52 @Column(name = "password", nullable = false) 53 @NotBlank(message = "PASSWORDは必ず設定してください") 54 private String password; 55 /** 有効無効 */ 56 @Column(name = "enable", nullable = false) 57 private boolean enable; 58 /** メールアドレス */ 59 @Column(name = "email", nullable = false) 60 private String email; 61 /** 権限 */ 62 @Column(name = "userRole") 63 private String userRole; 64 /** パスワード更新日時 */ 65 @Column(name = "pwupDay") 66 private Timestamp pwupDay; 67   68 69 /** 上司ID  これをもとに上司情報を取得しbossに格納できるようにしたい*/ 70 @ManyToOne 71 @JoinColumn(name = "bossid") 72 private MST_Employee boss; 73 74 @Column(name = "bossId") 75 private int bossId; 76} 77 78//部署ENTITY結合の例 79/** 80 * MST_Departmentのentity 81 */ 82public class MST_Department implements Serializable { 83 84 @Id 85 @GeneratedValue(strategy = GenerationType.IDENTITY) 86 @Column(name = "departmentId", nullable = false) 87 /** 部署ID */ 88 private int departmentId; 89 @Column(name = "rowNo", nullable = false) 90 /** 列番号 */ 91 private int rowNo; 92 @Column(name = "departmentName", nullable = false) 93 /** 部署名 */ 94 private String departmentName; 95 96 /** 従業員所属情報 */ 97 @OneToMany(mappedBy = "department", cascade = CascadeType.ALL) 98 private List<MST_Employee> employee; 99} 100 101

試したこと

上司,部下の関係から
@ManyToOneタグや@OneToOneを使用してみたがうまくいかない。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

bossIdとempIdを関連付ける必要があるように思います。

@JoinColumn(name = "bossId", referencedColumnName = "empId")

投稿2023/05/25 13:40

ho-ta-te

総合スコア112

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問