Imagine I have one common functionality: series and number (string and integer) of some document. My object (insurance policy) contains information about series and number of different documents, so I would like to group this series and number into one java object and let hibernate store two fields on each object in the same table.
See the example:
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..... )
Something like this. What I really want to do - to get rid of duplication of fields in Polis object and incapsulate series and number fields in DocInfo object. This is ok for java, but as for Hibernate the only way I know - is to create ManyToOne relation and move this information to the other table (doc_info). But I need to keep all the information in one table!
Thanks.
Use @Embeddable
and @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;
}
See also:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With