У меня есть следующие классы:
public abstract class OperationAbstract {
...
}
@Entity
@Table(name = "T_OPERATION")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "OPERATION_NAME", discriminatorType = DiscriminatorType.STRING)
public class Operation extends OperationAbstract {
// All the @Column definitions (less @Column(name = "OPERATION_NAME"))
...
}
public abstract class OperationDB extends Operation {
...
}
@Entity
@DiscriminatorValue("AddUserOperation")
public class AddUserOperation extends OperationDB {
...
}
каждый раз, когда я пытаюсь сохранить один объект типа AddUserOperation
в моей базе данных, @DiscriminatorValue
, кажется, игнорируется, и запрос, сгенерированный Hibernate:
Hibernate:
insert
into
T_OPERATION
(ISIM_REQUEST, OPERATION_COUNT, OPERATION_TYPE, TASK_ID, OPERATION_NAME, OPERATION_ID)
values
(?, ?, ?, ?, 'Operation', ?)
но я ожидал:
Hibernate:
insert
into
T_OPERATION
(ISIM_REQUEST, OPERATION_COUNT, OPERATION_TYPE, TASK_ID, OPERATION_NAME, OPERATION_ID)
values
(?, ?, ?, ?, 'AddUserOperation', ?)
Я также пытался:
- Аннотировать класс
Operation
с помощью @DiscriminatorOptions(force = true)
- Сделать класс
Operation
абстрактным
Я вынужден использовать Hibernate 4.3.11.Final, но я попытался повторить тот же код с более новой версией Hibernate и это работает отлично. Я что-то не так делаю?