Java JPA@OneToOne关系删除

Java JPA@OneToOne关系删除,java,hibernate,jpa,Java,Hibernate,Jpa,我与@OneToOne有以下关系: @Entity public class CarUser { @OneToOne @JoinColumn(name = "use") private User user; } @Entity public class User { } 基本上,用户处于核心模型中,而CarUser处于扩展模型中。用户不应该知道任何关于CarUser的信息(我不能在上面定义一个反向关系) 问题是,当我删除该用户时,是否也可以级联删除该用户 根据定义,如

我与@OneToOne有以下关系:

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

@Entity
public class User {
}
基本上,用户处于核心模型中,而CarUser处于扩展模型中。用户不应该知道任何关于CarUser的信息(我不能在上面定义一个反向关系)


问题是,当我删除该用户时,是否也可以级联删除该用户

根据定义,如果您想声明“用户不应该知道任何关于CarUser的信息”,您就不能让持久性层为您级联

不过,您不一定需要做出这样的陈述——这可能不是正确的设计理解。同一数据库模式中的实体相互了解是合理的

让我们这样说吧——尽管(在制造/会计系统中)CostingModule和LedgerModule位于不同的模块中,但它们绝对需要通信和交互

也可以改为使用数据库中的外键约束,或使用触发器

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

根据定义,如果您想声明“用户不应该知道任何关于CarUser的信息”,您就不能让持久性层为您级联

不过,您不一定需要做出这样的陈述——这可能不是正确的设计理解。同一数据库模式中的实体相互了解是合理的

让我们这样说吧——尽管(在制造/会计系统中)CostingModule和LedgerModule位于不同的模块中,但它们绝对需要通信和交互

也可以改为使用数据库中的外键约束,或使用触发器

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

他们在数据库中有关系吗?它们将在多少个应用程序中共存?
User
会在其中一个中,而
CarUser
会在另一个中吗?他们会,CarUser会有一个列引用用户,正如JPA注释所建议的那样。所谓关系,我的意思是类似外键的东西。我会尝试使用sql触发器,但根据您的模型判断,这是不可能的,所以,尝试使用一些拦截器,并检查正在删除的数据。它们在数据库中是否有关系?它们将在多少个应用程序中共存?
User
会在其中一个中,而
CarUser
会在另一个中吗?他们会,CarUser会有一个列引用用户,正如JPA注释建议的那样。关系的意思是类似外键的东西。我会尝试使用sql触发器,但根据您的模型判断这是不可能的,所以,尝试使用一些拦截器,并检查删除的数据。