Hibernate:如何自动在两列上映射java对象?

想象一下,我有一个共同的功能:一些文档的系列和数字(字符串和整数)。我的对象(保险单)包含有关系列和不同文档数量的信息,所以我想将这个系列和数字组合成一个java对象,让hibernate在同一个表中的每个对象上存储两个字段。 看例子:
    class Polis {
        private DocInfo kaskoNumber;
        private DocInfo osagoNumber;
        private DocInfo tsNumber;
    }
    class DocInfo {
        private String series;
        private Integer number;
    }
    table:
    polis(kaskoSeries varchar2, 
          kaskoNumber numeric, 
          osagoSeries varchar2, 
          osagoNumber numeric..... )
像这样的东西。我真正想做的是 - 摆脱Polis对象中的字段重复,并在DocInfo对象中封装系列和数字字段。对于java来说这是好的,但对于Hibernate,我知道的唯一方法是创建ManyToOne关系并将此信息移动到另一个表(doc_info)。但我需要将所有信息保存在一个表格中! 谢谢。     
已邀请:
使用
@Embeddable
@AttributeOverrides
@Entity
class Polis {
    @AttributeOverrides( {
        @AttributeOverride(name="series", column = @Column(name="kaskoSeries") ),
        @AttributeOverride(name="number", column = @Column(name="kaskoNumber") )
    })
    private DocInfo kaskoNumber;

    @AttributeOverrides( {
        @AttributeOverride(name="series", column = @Column(name="osagoSeries") ),
        @AttributeOverride(name="number", column = @Column(name="osagoNumber") )
    })
    private DocInfo osagoNumber;
    ...
}

@Embeddable
class DocInfo {
    private String series;
    private Integer number;
}
也可以看看: 5.1.5。嵌入式对象(也称为组件)。     
你想要一个Hibernate“组件” - 在JPA中称为“可嵌入”对象。组件/ embeddable有两个字段,您的实体类只有一个组件/ embeddable实例。这两列与实体的其余字段一起存在于实体表中。     

要回复问题请先登录注册