JPA @OneToOne关系删除

时间:2013-05-12 20:13:15

标签: java hibernate jpa

我有以下@OneToOne关系:

@Entity
public class CarUser {
    @OneToOne
    @JoinColumn(name = "use")
    private User user;
}

@Entity
public class User {
}

基本上,用户属于核心模型,CarUser属于扩展模型。用户不应该对CarUser有任何了解(我无法在其上定义反向关系)。

问题是当我删除用户时,无论如何我还可以级联删除CarUser吗?

1 个答案:

答案 0 :(得分:1)

根据定义,如果您想声明“用户不应该了解CarUser的任何信息”,则无法让持久层为您级联。

但是,您不一定需要做出这样的陈述 - 这可能不是一个正确的设计理解。对于在同一数据库模式中的实体,彼此了解是合理的。

让我们这样说吧 - 即使(在制造/会计系统中)CostingModule和LedgerModule在不同的模块中,它们绝对也需要进行通信和交互。

您也可以使用数据库中的外键约束,或使用触发器来执行此操作。

alter table CARUSER add constraint CARUSER_USER foreign key (ID) 
  references "USER" (ID) on delete cascade;