私のプロジェクトには、必須テーブルという非常に重要なテーブルがあります。いくつかの列がありますが、この場合最も重要なのは主キーです。
Mandatory
1. id (Long Primary Key)
...
ここで、2 つの新しいテーブルを追加する必要があります。追加テーブルと追加テーブルです。どちらも 2 つの列しかありません。追加では、両方が主キーです。ご覧のとおり、それらの1つは外部キーでもあります。
Additional
1. mandatory_id (Long Primary Key FK -> Mandatory.id)
2. description (Varchar(512) Primary Key)
Extra テーブルでは、主キーは外部キーでもあります。
Extra
1. mandatory_id (Long Primary Key FK -> Mandatory.id)
2. text (Varchar(512)
Hibernate を使用してプロジェクトに実装する方法を検討しています。
私はこの方法でそれらを宣言しました(ここではゲッター、セッターなどなし)、MandatoryEntity
クラス:
@Entity
@Table(name = "mandatory")
public class MandatoryEntity {
@OneToMany
@JoinColumn(name = "mandatory_id")
protected List<AdditionalEntity> additonals;
@OneToOne
@JoinColumn(name = "mandatory_id")
protected ExtraEntity extra;
}
AdditionalEntity
クラス:
@Entity
@Table(name = "additional")
public class AdditionalEntity {
@EmbeddedId
private AdditionalPK id;
@ManyToOne(fetch = FetchType.LAZY)
@Fetch(value = FetchMode.JOIN)
@JoinColumn(name = "mandatory_id", nullable = false, insertable = false, updatable = false)
protected MandatoryEntity mandatory;
}
AdditionalPK
クラス:
@Embeddable
public class AdditionalPK {
@Column(name = "mandatory_id")
private Long mandatoryId;
@Column(name = "description")
private String description;
}
ExtraEntity
クラス:
@Entity
@Table(name = "extra")
public class ExtraEntity {
@Id
@Column(name = "mandatory_id")
private Long id;
@OneToOne
@PrimaryKeyJoinColumn
protected MandatoryEntity mandatory
@Column(name = "text")
protected String text;
}
現時点では、私が作業しているラップトップが壊れているため、検討する時間があります。JPA仕様の@SecondaryTables
注釈で見つけました。私の場合、この注釈を使用できますか? これらは 2 つのテーブルだけで、それぞれに 2 つの列しかありません。1 つ目は複合主キーを持ち、2 つ目はそうではありません。
たぶん、このテーブルを1つに実装する別の方法がありMandatoryEntity
ますか? 2 つの新しいエンティティがない場合:AdditionalEntity
およびExtraEntity
?