首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在所有者类中添加外键属性?

在所有者类中添加外键属性?
EN

Stack Overflow用户
提问于 2022-01-12 10:18:26
回答 1查看 93关注 0票数 0

我在一个spring引导应用程序中有一个简单的实体类:

代码语言:javascript
运行
AI代码解释
复制
@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表的id字段的companyid外键字段创建了company表。很好。

现在,我的问题是:是否必须将companyid属性添加到plant类中?如果是,有transient注释吗?因为由于company关系,该字段已经在数据库中。

稍后,如果我向这个后端发送一个post请求来创建一个新的工厂,我可以发送一个完整的company对象,但也只能发送companyid

什么是正确的方式来建模呢?标准是什么?我记得,在EF核心中,如果我引用了一个导航属性,那么我也向模型类添加了id属性(也称为外键)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-12 12:55:15

关联设置看起来是正确的,使用JPA,您不会显式地创建一个外键属性(如果您对默认行为很满意,甚至不一定需要@JoinColumn注释)。

为了创建REST,一种标准的方法是将实体映射到DTO,以便从API发送数据到API。根据(端点特定的)用例,DTO可能只包含关联实体的id,而不是整个实体。

mapstruct这样的工具可以简单地生成相应的映射代码。

减少一些样板的另一个想法是使用像spring-data-rest这样的框架,它从定义的实体类https://spring.io/projects/spring-data-rest中自动创建REST-API。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70686495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档