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
по умолчанию по причине. Это было безопаснее и проще в обращении.