Dynami c Значение для @DiscriminatorColumn - PullRequest
1 голос
/ 04 марта 2020

возможно ли предоставить динамическое c значение (например, из переменной) для jpa @DiscriminatorColumn?

Например, существует эта сущность:

@Entity
@Table(name = "topic")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
    discriminatorType = DiscriminatorType.INTEGER, name = "topic_type_id")
public class Topic {

   @Transient
   private Integer type_id

I попытался установить topic_type_id динамически, предоставив @DiscriminatorFormula следующим образом:

@DiscriminatorFormula("CASE WHEN type_id IS NOT NULL THEN type_id end")

Но это не работает так, как задумано. У кого-нибудь есть идея, как предоставить значение Dynami c для DiscriminatorColumn?

1 Ответ

0 голосов
/ 04 марта 2020

К сожалению, нет. Аннотации и их параметры разрешаются во время компиляции.

Другими словами, компилятору необходимо это конкретное использование @DescriminatorColumn, чтобы «знать» его параметры, прежде чем экземпляр Topic, содержащий type_id, когда-либо будет экземпляр.

Для справки приведен список разрешенных типов параметров аннотации, как указано в JLS: https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls -9.6.1

...