我目前正在使用继承策略 InheritanceType.JOINED。我的扩展类只包含一个 String 类型的 Map,它存储在自己的表中。我想知道是否有可能省略只包含 id 的扩展类的表。
如果不存在“省略”表格的直接选项,请告诉我您将如何对其进行不同的建模。
该示例显示我有一个基类“Attribute”,它由类“StringMapAttribute”扩展。这个extendend 类只包含一个集合。“StringMapAttribute”的表最后只包含“id”,即“Design Overhead”,所以我可以使用继承和建模不同的属性类型。因此,只有一个包含一个 id 列的表并不理想。
// Base class
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name="TYPE", discriminatorType=DiscriminatorType.STRING)
public abstract class Attribute<T> implements Serializable {
@Id
@GeneratedValue
private int id;
private String name;
...
}
// Extended class with embedded map
@Entity
@Table(name="attribute_string") --> I like not to keep that table
@DiscriminatorValue("STRING")
public class StringMapAttribute extends Attribute<Map<String,String>> {
@ElementCollection
@CollectionTable(name= "attribute_string_language", joinColumns = @JoinColumn(name = "attribute_id")
)
@MapKeyColumn(name="language")
@Column(name = "value")
private Map<String, String> value = new HashMap<String, String>();
}
感谢您提供任何有用的提示。