Java 休眠-让它映射

Java 休眠-让它映射,java,database,hibernate,Java,Database,Hibernate,我有以下db模型: 我有几个int、double、string和date的子类型,它们的抽象父类型为templateValue。它们都有共同的valueType。每个TemplateValueMap都有一个TemplateValue。此外,每个TemplateValueMap都有一个TemplateItem。该templateItem有一个valueType,它是TemplateValue的valueTypes之一。如果valueType存在,则创建一个表。如果不是,则不创建表 我的课程是这样

我有以下db模型:

我有几个
int
double
string
date
的子类型,它们的抽象父类型为
templateValue
。它们都有共同的
valueType
。每个
TemplateValueMap
都有一个
TemplateValue
。此外,每个
TemplateValueMap
都有一个
TemplateItem
。该
templateItem
有一个
valueType
,它是
TemplateValue
valueTypes
之一。如果
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;
该类有几个child-like(对于其他所有类,如
TemplateValueDate/Int/Double
etc.,它们看起来都一样):

我的
TemplateValueMap
目前看起来是这样的:

@Entity
public class TemplateValueMap implements Serializable{

    @Id
    @GeneratedValue
    private Long id;

    @OneToOne
    private TemplateValue tempValue;

    @OneToOne
    private TemplateItems tempItem;
我的
TemplateValueItem
如下所示:

@Entity
@DiscriminatorColumn(name="valueType")
public abstract class TemplateValue implements Serializable{

    @Id
    @GeneratedValue
    private Long id;

    @NotNull    
    @Size(min=1, max=32)
    private int valueType;
@实体 公共类TemplateItems实现可序列化{

@Id
@GeneratedValue
private Long id;

@OneToOne
private TemplateValue tempValue;

private String label;

private String valueType;

private String displayType;
我的问题是如何告诉hibernate它应该决定是否使用一个
valueType
来创建
TemplateValueString/Double/Int
value
值?该值是因为
TemplateValue
中的valueType而创建的,并且在
TemplateItems

我真的很感激你的回答

更新


我不明白问题是什么。Hibernate映射现有的表。它不会创建新表。为什么会这样?@JBNizet Thx非常感谢您的回答!我重新制定了我的问题。请看我的问题!除了您的OneTONE双向关联没有正确映射之外(其中一个边必须具有mappedBy属性),一切看起来都很好,它将开箱即用。什么不起作用?Hibernate将在加载行时使用鉴别器值来实例化相应的子类。插入新行时,您的责任是创建相应子类的实例并将其保存。@JBNizet thx获取您的答案!我阅读了有关conc的内容
联合子类的ept
。您认为在这种设置中使用该概念有意义吗,因为我认为
模板项
将不会正确映射为
模板值
的正确
值?顺便问一下,您有这样一个持久化方法的示例吗?如果我理解正确,您可以nt以确保TemplateValue中valueType的值与TemplateItem中valueType的值匹配。这是Hibernate无法帮助您实现的功能要求。您有责任避免将字符串模板值附加到日期模板项。既然所有内容都与OneToOne关联相链接,为什么要重复在两个不同的地方应用这些信息?