Hibernate SingleTable DiscriminatorValue не работает - PullRequest
0 голосов
/ 23 марта 2020

У меня есть следующие классы:

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 и это работает отлично. Я что-то не так делаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...