HyperJAXB:如何使用@OneToOne而不是@ManyToOne

时间:2014-03-30 15:51:53

标签: java jpa jaxb xsd hyperjaxb

HyperJAXB为XSD 1:1关系生成@ManyToOne注释,如:

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

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

这不是预期的行为,因为它应该生成@OneToOne Annotations。好吧,自定义指南描述了您可以通过向每个元素定义添加指令来自定义此行为(请参阅http://confluence.highsource.org/display/HJ3/Making+schema-derived+classes+ready+for+JPA,段落&#34;映射为一对一&#34;)。

这很好,但我需要一个全局配置。任何人都可以告诉我,在bindings.xjb中放入什么来实现这个目标?

1 个答案:

答案 0 :(得分: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是有原因的。它更安全,更容易处理。