我有以下星座:B1.xsd 和 B2.xsd 都导入 A.xsd。使用maven-hyperjaxb3-plugin,我为 B1.xsd 和 B2.xsd 创建了带有 JPA 注释的 Java 类。所以 A.xsd 的类是在 B1.xsd 的项目中创建的,而 es 在 B2.xsd 的项目中也是如此。为了在一个持久性单元中使用这两组类,我通过 jaxb 外部绑定设置每个实体上的数据库模式,如Editing @java.persitence.Table in external jaxb-Binding所示。
问题是,在部署到wildfly后,wildfly会抛出org.hibernate.DuplicateMappingException: duplicate import: B1_ClassName refer to both B1_ClassName and B2_ClassName (尝试使用auto-import=\"false\")"}}
所以我需要做的是通过jaxb外部绑定编辑Entity注解的name参数,这样
@XmlRootElement(name = "B1_Element1")
@Immutable
@Cacheable(true)
@Entity(name = "B1_Element1")
@Table(name = "B1_Element1")
public class B1_Element1
implements Serializable, Equals, HashCode, ToString
{
...
}
看起来像
@XmlRootElement(name = "B1_Element1")
@Immutable
@Cacheable(true)
@Entity(name = "PACKAGE_NAME.B1_Element1")
@Table(name = "B1_Element1")
public class B1_Element1
implements Serializable, Equals, HashCode, ToString
{
...
}
我的实际bindings-xjc.xjb看起来像这样
<jaxb:globalBindings localScoping="toplevel">
<xjc:serializable />
</jaxb:globalBindings>
<jaxb:bindings schemaLocation="B1.xsd"
node="/xs:schema">
<hj:persistence>
<hj:default-generated-id name="Hjid">
<orm:generated-value strategy="IDENTITY" />
</hj:default-generated-id>
<hj:default-entity>
<orm:table schema="B1_database_schema" />
</hj:default-entity>
</hj:persistence>
<jaxb:schemaBindings>
<jaxb:package name="b1.package.name" />
</jaxb:schemaBindings>
</jaxb:bindings>
有人知道如何编辑@java.persitence.Entity 的名称参数吗?