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

<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中放入什么?

最佳答案

您可以默认将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。它更安全,更容易处理。

07-23 16:08