HyperJAXB: как использовать всегда @OneToOne вместо @ManyToOne

HyperJAXB генерирует аннотации @ManyToOne для отношений XSD 1:1, например:

<xs:element name="typeName" type="otherType" />

или же

<xs:element name="typeName" type="otherType" minOccurs="0" maxOccurs="1" />

Это не ожидаемое поведение, поскольку оно должно генерировать аннотации @OneToOne. Ну, руководство по настройке описывает, что вы можете настроить это поведение, добавляя инструкции к каждому определению элемента (см. http://confluence.highsource.org/display/HJ3/Making+schema-derived+classes+ready+for+JPA, пункт "Отображение как один-к-одному").

Это нормально, но мне нужна глобальная конфигурация для этого. Кто-нибудь может сказать мне, пожалуйста, что положить в bindings.xjb для достижения этой цели?

1 ответ

Вы можете переключить X:1 по умолчанию на один к одному:

<jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
    <hj:persistence>
        <hj:default-to-one>
            <hj:one-to-one/>
        </hj:default-to-one>
    </hj:persistence>
</jaxb:bindings>

Однако будьте предупреждены, я думаю, что я выбрал @ManyToOne по умолчанию по причине. Это было безопаснее и проще в обращении.

Другие вопросы по тегам