CascadeType.ALL和生命周期回调存在问题

| 我在存储此简单映射时遇到一些问题:
@Entity
public class Account extends UUIDBase {
    private Profile profile;

    @OneToOne(cascade = CascadeType.ALL, optional = false)
    public Profile getProfile() {
       return profile;
    }

    public void setProfile(Profile profile) {
        this.profile = profile;
    }
}

@Entity
public class Profile extends UUIDBase {
  ...
}
我们的实体具有所有属性\“ creationDate \”和\“ lastUpdated \”。这些属性放置在映射的超类UUIDBase中。当实体保留或更新时,两个字段都将在@PrePersist和@PreUpdate回调中更新。除级联的情况外,这都可以正常工作。 当我们存储帐户时,配置文件也将始终被存储。帐户的creationDate和lastUpdated属性将通过回调方法进行初始化。配置文件的回调方法将不会被调用。您有什么提示吗?     
已邀请:
        应该给他们打电话。确保您正确注册了回调。 MappedSuper类上的回调未得到调用的问题最近已修复,因此您可能需要将回调添加到2.2中的子类中。 您确定未调用回调,还是只是不更新​​值? 如果您直接在配置文件上调用持久化,则调用回调吗? 您如何注册回调?     
        谢谢您的回答。我想我现在已经解决了。我在上面描述了两个实体“帐户”和“个人资料”。我上面的描述中缺少实体“雇员”。这是映射:
@Entity
public class Employee extends UUIDBase {
    public Account account;

    @OneToOne(cascade = {CascadeType.REFRESH, CascadeType.REMOVE}, orphanRemoval = true)
    public Account getAccount() {
        return this.account;
    }

    public void setAccount(Account account) { 
        this.account = account;
    } 
} 映射为“员工可以有一个帐户。一个帐户必须有一个配置文件”。问题出在服务类中:
public void saveEmployee(Employee data) {
    Employee savedEmployee = empDao.saveEmployee(data);
    accountService.saveAccount(data.getAccount()); <-- Here is the failure
}
首先,我保存了雇员,并取回了保存的雇员对象。之后,我尝试通过自己的服务保存员工帐户。当我考虑到已保存的雇员对象时,一切正常,并调用回调。当我从\“ data \”参数获取帐户时,不会调用回调。     

要回复问题请先登录注册