假设我有一堂课MyClass:public class MyClass { @Id private int id; @??? private String cityName; // getters and setters}现在,我希望我的架构包含两个表:MyClassTable:id INT主键,CityTable.id上的城市INT外键CityTable:id INT主键,名称VARCHAR我是否必须为City创建一个具有两个属性的新类:int Id和String name?是否可以仅使用MyClass带有特殊注释的类来完成此操作cityName?
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
您应该创建表“ city”,这是一种“字典”。因此,您可以将其映射到不可变实体:
@Entity
@Immutable
@Table(name = "cities")
public class City {
@Id private Integer id;
private String name;
}
(并将其数据填充到数据库层)。
然后,您的“数据”实体应具有对该实体的@ManyToOne引用City:
@Entity
@Table(name = "my_classes")
public class MyClass {
@Id
@GeneratedValue
private Long id;
// ...
@ManyToOne
private City city;
}
对应于下my_classes表(例如PostgreSQL方言)-注意外键city_id:
create table my_classes (
id bigint not null constraint my_classes_pkey primary key,
-- ...
city_id integer constraint fk_my_classes_cities references cities
)
添加回答
举报
0/150
提交
取消