I need to use @AttributeOverride
on an @Embeddable
object to prevent collision of the column names for two properties of the same complex type.
However, when doing so, I also lose/override the @Enumerated
annotation of the networkId
property of the @Embedded
ExternalLink
object.
In the end, the column link_network
of the table is of type integer
, instead of varyingchar(255)
.
How can I configure the @AttributeOverride
to keep the @Enumerated
configuration?
Here is my schema:
@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;
}