我有以下数据库模型:
我有几个int
,double
,string
和date
的子类型,它们的抽象父类型为templateValue
。所有人都有valueType
的共同点。每个TemplateValueMap
都有一个TemplateValue
。此外,每个TemplateValueMap
都有一个TemplateItem
。 templateItem
valueType
的{{1}}是valueTypes
的{{1}}之一。如果TemplateValue
存在,则创建一个表。如果没有,则不创建表。
我的课程看起来像这样:
valueType
该类有几个孩子(对于像@Entity
@DiscriminatorColumn(name="valueType")
public abstract class TemplateValue implements Serializable{
@Id
@GeneratedValue
private Long id;
@NotNull
@Size(min=1, max=32)
private int valueType;
等所有其他类看起来都一样。)
TemplateValueDate/Int/Double
我的@Entity
@DiscriminatorValue(value = "stringValue")
public class TemplateValueString extends TemplateValue implements Serializable {
/**
* the int value
*/
@NotNull
@Size(min=1, max=32)
@Pattern(regexp = "[A-Za-z0-9 ]*", message = "Please insert a valid String")
@Column(name="String_value")
private String stringValue;
目前看起来像这样:
TemplateValueMap
我的@Entity
public class TemplateValueMap implements Serializable{
@Id
@GeneratedValue
private Long id;
@OneToOne
private TemplateValue tempValue;
@OneToOne
private TemplateItems tempItem;
看起来像这样:
@Entity 公共类TemplateItems实现Serializable {
TemplateValueItem
我的问题是如何告诉hibernate它应该决定是否使用@Id
@GeneratedValue
private Long id;
@OneToOne
private TemplateValue tempValue;
private String label;
private String valueType;
private String displayType;
来创建valueType
的{{1}}?由于value
中的valueType而创建此值,并在TemplateValueString/Double/Int
我非常感谢你的回答!
更新