2011-07-23 36 views
0

我想用eclipse鏈接歷史鏡像以下的類與繼承類型使用的EclipseLink歷史政策加入

@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類,則不會將任何內容寫入子類ComessionEmployeeHistorry的屬性中。

回答

0

奇數。

嘗試自定義這兩個類。

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); 
    } 
} 

但是,也記錄一個錯誤,你的錯誤似乎不正確。