@Enumerated (EnumType.STRING) потерян с помощью @AttributeOverride - PullRequest
0 голосов
/ 17 мая 2019

Мне нужно использовать @AttributeOverride для объекта @Embeddable, чтобы предотвратить конфликт имен столбцов для двух свойств одного и того же сложного типа.

Однако при этом я также теряю / переопределяю аннотацию @Enumerated свойства networkId объекта @Embedded ExternalLink.

В конце столбец link_network таблицы имеет тип integer вместо varyingchar(255).

Как настроить @AttributeOverride для сохранения конфигурации @Enumerated?

Вот моя схема:

@Embeddable
public class Address {

    @Embedded
    @AttributeOverrides({
        @AttributeOverride(name="network", column=@Column(name="link_network")),
        @AttributeOverride(name="networkAddress", column=@Column(name="link_network_address")),
        @AttributeOverride(name="element", column=@Column(name="link_element"))
    })
    private ExternalLink link;

    @Embedded
    @AttributeOverrides({
        @AttributeOverride(name="network", column=@Column(name="before_network")),
        @AttributeOverride(name="networkAddress", column=@Column(name="before_network_address")),
        @AttributeOverride(name="element", column=@Column(name="before_element"))
    })
    private ExternalLink before;
}

@Embeddable
public class ExternalLink {

    @Enumerated(EnumType.STRING)
    private NetworkId network;
    private String networkAddress;
    private String element;
}
...