我的项目中有一张非常重要的表格 - 强制表格。它有几列,但在这种情况下,最重要的是主键。
Mandatory
1. id (Long Primary Key)
...
现在我必须添加两个新表 - 附加表和额外表。它们都只有两列。在附加中,两者都是主键。如您所见,其中之一也是外键。
Additional
1. mandatory_id (Long Primary Key FK -> Mandatory.id)
2. description (Varchar(512) Primary Key)
在 Extra table 中,主键也是外键。
Extra
1. mandatory_id (Long Primary Key FK -> Mandatory.id)
2. text (Varchar(512)
我正在考虑如何在我的项目中使用 Hibernate 实现它。
我已经以这种方式声明了它们(这里没有 getter、setter 等),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
注释中找到了。我可以在我的情况下使用这个注释吗?这些只是两个表,每个表只有两列。第一个有复合主键,第二个没有。
也许还有另一种方法可以在一个表中实现这些表MandatoryEntity
?没有两个新实体:AdditionalEntity
和ExtraEntity
?