在所有者 class 中添加外键属性?
add foreign key attribute in the owner class?
我在 spring 启动应用程序中有这个简单的实体 class:
@Entity
public class Plant {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false, updatable = false)
private Long id;
private String code;
private String location;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="companyid", nullable = false)
private Company company;
}
这代表一种植物。一个公司可以有一个或多个工厂,一个工厂可以只属于一个公司。在 postgresql 数据库中,plant
table 是使用引用 company
[=] id
字段的 companyid
外键字段创建的38=]。很好。
现在,我的问题是:我是否必须将 companyid
属性添加到 plant
class?如果是,带有 transient
注释?因为由于 company
关系,该字段已经在数据库中。
稍后如果我将向此后端 f 发送 post 请求。 e.要创建新工厂,我可以发送整个 company
对象,但也只能发送 companyid
。
建模的正确方法是什么?标准是什么?我记得,在 EF 核心中,如果我引用了导航 属性,我也将相应的 id
属性(又名外键)添加到模型 class。
关联设置看起来是正确的,对于 JPA,您没有显式创建外键属性(如果您对默认行为没问题,您甚至不一定需要 @JoinColumn
注释)。
为了创建 REST-API,一种标准方法是将实体映射到 DTO,以便从 API 发送数据和向 API 发送数据。根据(特定于端点的)用例,DTO 可能例如仅包含 id
个关联实体而不是整个实体。
mapstruct
等工具可以轻松生成相应的映射代码。
另一个减少样板文件的想法是使用像 spring-data-rest
这样的框架,它会自动从定义的实体 类 创建一个 REST-API:
https://spring.io/projects/spring-data-rest
我在 spring 启动应用程序中有这个简单的实体 class:
@Entity
public class Plant {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false, updatable = false)
private Long id;
private String code;
private String location;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="companyid", nullable = false)
private Company company;
}
这代表一种植物。一个公司可以有一个或多个工厂,一个工厂可以只属于一个公司。在 postgresql 数据库中,plant
table 是使用引用 company
[=] id
字段的 companyid
外键字段创建的38=]。很好。
现在,我的问题是:我是否必须将 companyid
属性添加到 plant
class?如果是,带有 transient
注释?因为由于 company
关系,该字段已经在数据库中。
稍后如果我将向此后端 f 发送 post 请求。 e.要创建新工厂,我可以发送整个 company
对象,但也只能发送 companyid
。
建模的正确方法是什么?标准是什么?我记得,在 EF 核心中,如果我引用了导航 属性,我也将相应的 id
属性(又名外键)添加到模型 class。
关联设置看起来是正确的,对于 JPA,您没有显式创建外键属性(如果您对默认行为没问题,您甚至不一定需要 @JoinColumn
注释)。
为了创建 REST-API,一种标准方法是将实体映射到 DTO,以便从 API 发送数据和向 API 发送数据。根据(特定于端点的)用例,DTO 可能例如仅包含 id
个关联实体而不是整个实体。
mapstruct
等工具可以轻松生成相应的映射代码。
另一个减少样板文件的想法是使用像 spring-data-rest
这样的框架,它会自动从定义的实体 类 创建一个 REST-API:
https://spring.io/projects/spring-data-rest