AY:
私は春ブーツとJPAで働いていると私は2つのテーブル間の多対多の関係を持っています。この関係はまた、独自の属性を持っている必要がありますので、私はこの関係独自のクラスしなければなりませんでした。私はまた、すべてのクラスのリポジトリがあります。非プリミティブフィールドを使用した場合も、どのように私は正確に外部キーをマップするのでしょうか?
私の質問:春ブーツは私にエラーを与えるものではありませんので、どのように私はこれを実現するのですか?私は春ブーツとJPAの両方に新たなんです。ここでは以下のコードです:
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Entity //this is a relationship type. Does an annotation for relationship types exist?
@Embeddable
@Getter
@Setter
@NoArgsConstructor
public class RelationshipType implements Serializable {
@Id
private Long id;
@NotNull
@JoinColumn(name="id")
private Class1 class1;
@NotNull
@JoinColumn(name="code")
private Class2 class2;
private Integer anotherNumber;
}
InsertKnowledge:
これは、以下の例のようになります。あなたは、と他のテーブルにリレーションを設定する必要が@ManyToOne
希望得るために@ManyToMany
従業員と数の関係を。
@Entity
@Getter
@Setter
@Table(name = "employees_numbers")
public class EmployeeNumber {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "employee_id", nullable = false)
private Employee employee;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "number_id", nullable = false)
private Number number;
@Column(name = "extra_column", nullable = false)
private String extraColumn;
}
サイドノート:使用していない@NotEmpty
整数に。これは特に、コレクションのために作られています。
サイド注2:私はここにぐったりに行くと追加することです何をしたいと言うだろうnullable = false
列にして、それらをマークしていません@NotNull
。両者の間に有意差があります。