gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:55:14 26 4
gpt4 key购买 nike

假设我有一个常见功能:某个文档的系列和编号(字符串和整数)。我的对象(保险单)包含有关不同文档的系列和数量的信息,因此我想将这个系列和数量分组到一个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;
}

另请参阅:

关于Hibernate:如何自动将java对象映射到两列上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5057659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com