将JoinColumn参数设置为可插入且可更新为null

时间:2011-05-30 18:56:30

标签: java orm jpa java-ee

我在互联网上看到过几个关于使用JoinColumn的例子,如下例所示。

实际上,我想问你关于这个部分例子的两个问题。我们不能通过向JoinColumn添加“nullable = false”参数来摆脱“可选”参数。可选和可空的实体关系之间是否存在任何差异?在joincolumn中将insertable和updatable设置为false有什么好处?这样做是为了确保Employee实体无法更新Department实体吗?

@Entity
public class Employee {
  // ...

  @ManyToOne(optional=false)
  @JoinColumn(name="DEPT_ID", insertable=false, updatable=false)
  private Department department;
  // ...
}

1 个答案:

答案 0 :(得分:2)

ManyToOne上的

optional = false是持久性框架在构建java对象时解释的运行时指令。 JoinColumn上的nullable = true用于设置数据库模式,可能会也可能不会在运行时解释,具体取决于您的持久性提供程序。

通常情况下,JoinColumn映射是以这种方式完成的,以表明该部门的关系是由另一方管理的。

您可能会:

@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="DEPT_ID")
private Set<Employee> employees;

在您的部门上,您可以通过将其添加到那里的集合来创建新的员工 - 部门关系,而不是在员工上设置部门。这就是为什么你将Employee的部门标记为不可更新的原因,因为部门“拥有”修改关系的能力。