【发布时间】:2019-05-17 14:23:38
【问题描述】:
我需要在@Embeddable 对象上使用@AttributeOverride,以防止相同复杂类型的两个属性的列名冲突。
但是,这样做时,我也会丢失/覆盖 networkId 对象的 networkId 属性的 @Enumerated 注释。
最后,表的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;
}
【问题讨论】:
-
我使用了你的代码,一切都很好,所有列的类型都是 varchar(255)
-
您将此架构映射到哪个数据库/后端?
-
我正在使用
org.postgresql.Driver@MWiesner 和 Hibernate 5.0.11
标签: hibernate jpa jpa-2.0 embeddable