假设我有一个MyClass
类:
public class MyClass {
@Id
private int id;
@???
private String cityName;
// getters and setters
}
现在,我希望我的架构包含两个表:
我是否必须为城市创建一个具有两个属性的新类:int Id
和String name
?是否可以仅使用MyClass
类并在cityName
上添加一些特殊注释来实现此目的?
答案 0 :(得分:1)
您应该创建表“ city”,这是一种“字典”。因此,您可以将其映射到Immutable实体:
@Entity
@Immutable
@Table(name = "cities")
public class City {
@Id private Integer id;
private String name;
}
(并将其数据填充到数据库层)。
然后,您的“数据”实体应具有对City
实体的@ManyToOne引用:
@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
)