0
同じ名前の外部キーを接続しますJPAはのは、私が持っていると仮定してみましょう
- 表エディタ(ID、BUSINESS_NAME、バット)
- 表著者(ID、名前、電子メール)
- 表本(id、title、description、fk_author、fk_editor)。
はのは、fk_editorは、IDテーブルエディタのフィールドとfk_authorの外部キーであるテーブルの作者のidフィールドの外部キーであるとしましょう。著者がnは次のとおりです:1つのとブック:編集者がnは:1
はのは、関係本を言ってみましょう。
質問はどのように3つのテーブルを結合する書籍テーブルを介して? つまり、Hibernateが著者や編集者との関係を作るためにHibernateに理解させるためにBookクラスにどのようなコードを追加する必要がありますか?著者と編集者に同じIDフィールド名があることを考慮してください。 ここではそれは私が修正する必要があるサンプルコードです:
テーブル著者:
package com.bytecode.jpaexample.SpringBootMySqlJpaRestExample;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "authors")
public class Author implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
@OneToMany(fetch = FetchType.LAZY)
private int id;
@Column(name = "name")
private String name;
@Column(name = "surname")
private String surname;
@Column(name = "email")
private String email;
/* constructors and getters and setters omitted intentionally */
}
テーブルエディタ:
package com.bytecode.jpaexample.SpringBootMySqlJpaRestExample;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "editors")
public class Editor implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
@OneToMany(fetch = FetchType.LAZY)
private int id;
@Column(name = "business_name")
private String businessName;
@Column(name = "vat")
private String vat;
/* constructors and getters and setters omitted intentionally */
}
テーブル冊:
package com.bytecode.jpaexample.SpringBootMySqlJpaRestExample;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name="books")
public class Book implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "title")
private String title;
@Column(name = "description")
private String description;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id") //authors.id
@Column(name = "fk_author")
private int fk_editor;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id") //editors.id
@Column(name = "fk_editor")
private int fk_editor;
/* constructors and getters and setters omitted intentionally */
}