为了账号安全,请及时绑定邮箱和手机立即绑定

Java | 将字符串持久化为枚举

Java | 将字符串持久化为枚举

呼如林 2021-05-04 17:38:27
假设我有一堂课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

)


查看完整回答
反对 回复 2021-05-26
  • 1 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信