Использование политики истории Eclipselink с типом наследования join - PullRequest
0 голосов
/ 23 июля 2011

Я хотел бы использовать историю ссылок 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, то ничего не будет записано в свойства подкласса ComessionEmployeeHistorry.

1 Ответ

0 голосов
/ 26 июля 2011

Одд.

Попробуйте настроить оба класса.

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

Но также регистрируйте ошибку, ваши ошибки кажутся неправильными.

...