Generate @Indexed annotation using Jaxb or HyperJa

2019-07-19 04:55发布

问题:

I want to implement lucene based hibernate search in my assignment. For generating domain objects I am using HyperJaxb3.

I want @Indexed annotation to be added during domain object creation using HyperJaxb.

I tried googling for this, but unable to find solutions.

Any pointer in this regard will be of great help.

回答1:

Annotate plugin is the right answer. See this example.

This is how it looks in schema:

  ....
  xmlns:hs="http://annox.dev.java.net/org.hibernate.search.annotations"
  ...

  <xsd:complexType name="USAddress">
    <xsd:sequence>
      <xsd:element name="name" type="xsd:string">
        <xsd:annotation>
          <xsd:appinfo>
            <annox:annotate>
              <hs:FieldBridge impl="org.jvnet.hyperjaxb3.ejb.tests.annox.Items">
                <params>
                  <hs:Parameter name="foo" value="bar"/>
                </params>
              </hs:FieldBridge>
            </annox:annotate>
          </xsd:appinfo>
        </xsd:annotation>
      </xsd:element>
      <xsd:element name="street" type="xsd:string"/>
      <xsd:element name="city" type="xsd:string"/>
      <xsd:element name="state" type="xsd:string"/>
      <xsd:element name="zip" type="xsd:decimal"/>
    </xsd:sequence>
    <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
  </xsd:complexType>

You can also use extra binding files (see the example).