关系对

我们可以将 @ManyToOne 视为 @OneToMany/@ManyToOne 关系对的 “one” 端。

因此,它是映射到外键列的一端。

@Entity
public class Contact ...

  // maps to "customer_id" foreign key column
  @ManyToOne
  Customer customer;
  ...

如果外键列与基于属性名称 + “_id” 的命名约定不匹配,则需要定义一个 @JoinColumn。

@Entity
public class Contact ...

  // explicit @JoinColumn of "cust_id" as the foreign key column
  @ManyToOne @JoinColumn("cust_id")
  Customer customer;
  ...

optional=false

如果基础外键应具有 NOT NULL 约束,则指定 optional=false

@Entity
public class Contact ...

  // not null constraint as optional=false
  @ManyToOne(optional=false)
  Customer customer;
  ...

@NotNull

我们可以使用 javax 验证 @NotNull 代替 optional=false 来定义基础外键列具有 NOT NULL 约束。

@Entity
public class Contact ...

  // @NotNull same as optional=false
  @NotNull @ManyToOne
  Customer customer;
...