用新表中的新对象扩展现有Hibernate对象



我有一个现有的表Attribute,其中包含字符串属性和到AttributeType表的链接,所有这些都在整个应用程序中实现。

public class AttributeDTO {
private Long id;
private AttributeTypeDTO attributeType;
private String value;
...
}

我想添加新的属性类型与一个复杂的值(一个联系人与名称,名称,地址,…),这将包含在它自己的表。新类ContactAttribute将扩展旧类,并基于attributedto# attributeType返回Attribute或ContactAttribute。链接(一种外键)将存储在原始Attribute表的字符串值中。

问题是,这是否有可能在Hibernate中自动完成?我当然期待一些改变的设计-可能是一个鉴别器列添加到属性表?和/或使属性抽象并将其拆分为StringAttribute和ContactAttribute?

Thanks for ideas

为什么要在数据库上将其建模为表?您计划通过查询来搜索值吗?如果没有,就继续在数据库端使用字符串,并在这里进行某种JSON编码。您可以使用JSON编码以任何您想要的方式对值进行建模,但避免使用单独的表通常有助于提高性能。使用单独的表表示值是EAV(实体-属性-值)模型的一个常见缺陷,您可以在互联网上阅读到很多有关该模型的信息。理想情况下,实体表上应该只有一个JSON列,其中包含编码为JSON的所有属性值。现在大多数数据库都支持在JSON列内的值上创建索引,因此即使是出于查询目的,性能也不应该是一个问题

最新更新