【问题标题】:How to use a foreign key variable without writing the specific foreign key column in the entity class?如何在实体类中不写具体外键列的情况下使用外键变量?
【发布时间】:2020-07-09 08:59:36
【问题描述】:

我有以下实体“用户”,其中“公司 ID”字段是外键:

@Entity
@Table(name = "Users")
@Getter @Setter @ToString
public class User {

@Id
@GeneratedValue
private long id;

@Column(name = "company_id")
private Long companyId;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "company_id", insertable = false, updatable = false)
private Company company;

公司实体:

@Entity
@Table(name = "Companies")
@Getter @Setter @ToString
public class Company {

    @Id
    @GeneratedValue
    private long id;
      
    @OneToMany(mappedBy = "company", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
    private List<User> users;

我从课程中删除了其他不相关的字段。 我正在使用弹簧启动数据 jpa。 我的问题是如何删除字段“companyId”并使用字段“company”中的公司 ID 用于数据库的 CRUD 函数。

【问题讨论】:

  • “companyId”和“company”都不是“变量”。

标签: java spring-boot hibernate jpa foreign-keys


【解决方案1】:

只需删除 companyId 并使 Company 可写

@Entity

    @Table(name = "Users")
    @Getter @Setter @ToString
    public class User {
    
    @Id
    @GeneratedValue
    private long id;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "company_id")
    private Company company;

【讨论】:

  • 当我尝试添加用户时,数据库中的 company_id 列仍然为空。这是我使用的 JSON 代码 { "company": { "id": 1 } }
  • 公司长什么样?以及如何将 JSON 转换为实体?
  • 我不小心把@JsonIgnore 放在了“公司”上。我删除了它并且它有效。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
相关资源
最近更新 更多