hyperjaxb中的@LazyCollection(LazyCollectionOption.FALSE)?

时间:2014-11-18 00:24:26

标签: java xml hibernate jpa hyperjaxb

如何在hyperjaxb中将集合设置为@LazyCollection(LazyCollectionOption.FALSE)

以下是示例:我有一个xml节点ab,它可以包含类型cd的子节点列表或类型{{1的子节点列表}}。 efcd都只包含文字/字符串内容。我有一个xsd定义,我通过JAXB和hyperjaxb运行来创建带有数据库表的hibernate注释的java类。而不是设置fetchtype,如何让hyperjaxb为每个集合设置ef

xml看起来像:

@LazyCollection(LazyCollectionOption.FALSE)

或:

<ab>
    <cd>Some thing</cd>
    <cd>Another thing</cd>
</ab>

xsd看起来像:

<ab>
    <ef>Some thing</ef>
    <ef>Another thing</ef>
</ab>

生成的实体应如下所示:

<xs:complexType name="Ab">
  <xs:sequence>
    <xs:element name="cd" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element name="ef" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
</xs:complexType>

1 个答案:

答案 0 :(得分:0)

@LazyCollection@org.hibernate.annotations.LazyCollection(完全限定格式)是专有的Hibernate注释,而不是JPA标准。

Hyperjaxb仅支持标准的JPA 1.0和2.0注释,因此不支持@LazyCollection

Optons:

  • 您可以使用向模式派生类添加任意注释。因此,将允许您将@LazyCollection添加到目标属性。但是,您需要自定义要显示@LazyCollection的每个属性。
  • Hyperjaxb支持所谓的变体(不同的生成模式)。例如,这是JPA 1.0 variant的配置,这是JPA 2.0 variant。您可以通过为Hibernate编写和配置新的变体来扩展Hyperjaxb,这将支持特定于Hibernate的注释和自定义。但是,这是相当先进的。我需要花几天的时间来实施。