Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate @embeddable annotation equivalent for XML mapping file?

I have a class that I am creating a Hibernate mapping which contains a legacy object that I can't modify, so it doesn't have the necessary id field to play nicely with Hibernate. I would like to annotate the legacy object as an @Embedded field of my new class and write an hbm.xml file for the legacy object and note that it is embeddable. Is there a way to do this? The only documentation for embedding objects I've seen refers to annotating objects instead of using XML.

I realize that I could extend the legacy object and annotate it appropriately, but these case might occur frequently so I'd like to avoid that if possible.

like image 909
Dave Avatar asked Jan 20 '11 23:01

Dave


1 Answers

The XML counterpart of @Embedded is <component>, see 5.1.5. Embedded objects (aka components).

However, it doesn't work the same way as the @Embeddable/@Embedded pair, you need to describe all properties of the component class in .hbm.xml of the containing class, something like this:

<class name = "NewClass">
    ...
    <component name = "legacyObject">
        ... properties of the legacy class ...
    </component>
</class>
like image 154
axtavt Avatar answered Oct 03 '22 03:10

axtavt