【问题标题】:Using Eclipselink history policy with inheritance type join使用带有继承类型连接的 Eclipselink 历史策略
【发布时间】:2011-07-23 08:41:01
【问题描述】:

我想使用 eclipse 链接历史将以下内容镜像到类

@Entity
@Table(name="EMPLOYEE")
@Inheritance(strategy= InheritanceType.JOINED)
@TableGenerator(name="Employee_Gen", table="ID_GEN", pkColumnName="GEN_NAME", valueColumnName="GEN_VAL", pkColumnValue="Employee_Gen")
@Customizer(EmployeeCustomizer.class)
public class Employee implements Serializable {
}

@Entity
@Table(name="COMMESSIONEMPLOYEE")
public class CommesionEmployee extends Employee {
    }

我的历史记录表在哪里

@Entity
@Table(name="EMPLOYEE_HISTORY")
@IdClass(EmployeeHistoryId.class)
@Inheritance(strategy= InheritanceType.JOINED)
public class EmployeeHistory implements Serializable {
}

@Entity
@Table(name="COMMISSIONEMPLOYEE_HISTORY")
public class CommesionEmployeeHistory extends EmployeeHistory {
  }

定制器类是

public class EmployeeCustomizer implements DescriptorCustomizer {

    @Override
    public void customize(ClassDescriptor cd) throws Exception {
        HistoryPolicy policy = new HistoryPolicy();
        policy.addStartFieldName("MJSTART");
        policy.addEndFieldName("EMPLOYEE.MJEND");
        //policy.addEndFieldName("COMMISSIONEMPLOYEE.CEEND");
        policy.addHistoryTableName("EMPLOYEE","EMPLOYEE_HISTORY");
        //policy.addHistoryTableName("COMMISSIONEMPLOYEE","COMMISSIONEMPLOYEE_HISTORY");
        policy.setShouldHandleWrites(true);
        cd.setHistoryPolicy(policy);
    }
}    

目前没有任何内容写入 COMMESSIONEMPLOYEE_HISTORY 表。我在这里做错了什么?

P,S> 如果我使用单个表来继承 EmployeeHistory 类,则不会将任何内容写入子类 ComessionEmployeeHistory 的属性。

【问题讨论】:

    标签: inheritance jpa glassfish history eclipselink


    【解决方案1】:

    奇数。

    尝试自定义这两个类。

    public class EmployeeCustomizer implements DescriptorCustomizer {
    
        @Override
        public void customize(ClassDescriptor cd) throws Exception {
            HistoryPolicy policy = new HistoryPolicy();
            policy.addStartFieldName("MJSTART");
            policy.addEndFieldName("MJEND");
            policy.addHistoryTableName("EMPLOYEE","EMPLOYEE_HISTORY");
            policy.setShouldHandleWrites(true);
            cd.setHistoryPolicy(policy);
        }
    }  
    
    public class CommesionEmployeeCustomizer implements DescriptorCustomizer {
    
        @Override
        public void customize(ClassDescriptor cd) throws Exception {
            HistoryPolicy policy = new HistoryPolicy();
            policy.addStartFieldName("MJSTART");
            policy.addEndFieldName("MJEND");
            policy.addHistoryTableName("COMMISSIONEMPLOYEE","COMMISSIONEMPLOYEE_HISTORY");
            policy.setShouldHandleWrites(true);
            cd.setHistoryPolicy(policy);
        }
    } 
    

    但是,还要记录一个错误,您的错误似乎不正确。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多