Я использую hyperjaxb3, и он успешно решает большинство моих проблем.
Однако я провел все утро с проблемой, которую не могу решить. Скорее всего, это одна из тех глупых и глупых вещей, которые я совершенно не замечаю, но не могу найти.
Проблема в том, что внутри bindings.xjb я пытаюсь изменить сгенерированное имя таблицы для одного из моих объектов, но независимо от того, что я пытаюсь сделать, установленное значение полностью игнорируется.
Это содержимое связанных файлов:
XSD-файл (просто фрагмент)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://.../es/xbrl/eu/model/concept-statement" xmlns:fws="http://.../es/xbrl/eu/model/concept-statement">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<xs:element name="structure">
<xs:complexType>
<xs:sequence>
<xs:element ref="fws:module"/>
</xs:sequence>
</xs:complexType>
</xs:element>
bindings.xjb
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings
version="2.1"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:hj="http://hyperjaxb3.jvnet.org/ejb/schemas/customizations"
xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
jaxb:extensionBindingPrefixes="hj orm">
<jaxb:bindings schemaLocation="concept-statement.xsd" node="/xs:schema">
<jaxb:schemaBindings>
<jaxb:package name="es.company.cirbe.cubo.hechos.modelo"/>
</jaxb:schemaBindings>
<jaxb:globalBindings localScoping="toplevel">
<jaxb:serializable/>
</jaxb:globalBindings>
<jaxb:bindings node="xs:element[@name='structure']">
<hj:entity>
<orm:table name="FACTS_STRUCTURE"/>
</hj:entity>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
pom.xml (только зависимости и часть сборки)
<dependencies>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>org.jvnet.hyperjaxb3</groupId>
<artifactId>hyperjaxb3-ejb-runtime</artifactId>
<version>0.6.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.jvnet.hyperjaxb3</groupId>
<artifactId>maven-hyperjaxb3-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<debug>false</debug>
<extension>true</extension>
<variant>ejb</variant>
<generateDirectory>src/main/java</generateDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/persistence.xml</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
Созданный Java-файл
@XmlRootElement(name = "structure")
@Entity(name = "Structure")
@Table(name = "STRUCTURE_")
@Inheritance(strategy = InheritanceType.JOINED)
public class Structure
implements Serializable, Equals, HashCode
{
}
Я абсолютно уверен, что файл привязок читается: я проверил оба журнала maven и, если я установил какие-то странные значения для выражений xpath, я получаю связанное с ними исключение времени выполнения.
Кроме того, это не только игнорирование настройки имени таблицы. Я пытался изменить имя объекта, схему, установить другую длину столбца для простого атрибута... Во всех этих тестах вывод всегда был таким же, как я скопировал выше.
И я также проверил существующие образцы, но не смог понять, что я делаю неправильно.
С Уважением