次のコンスタレーションがあります: B1.xsd と B2.xsd は両方とも A.xsd をインポートします。maven-hyperjaxb3-pluginを使用して、B1.xsd と B2.xsd の両方に JPA アノテーションを付けた Java クラスを作成しました。したがって、A.xsd のクラスは B1.xsd のプロジェクトに作成され、B2.xsd のプロジェクトにも作成されます。この 2 セットのクラスを 1 つの永続化ユニットで使用するために、外部 jaxb-Binding で @java.persitence.Table を編集する に示すように、jaxb 外部バインディングを介して各エンティティのデータベース スキーマを設定します。
問題は、wildfly にデプロイした後、wildfly がorg.hibernate.DuplicateMappingException: duplicate import: B1_ClassName refers the 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 の name パラメータを編集する方法を知っている人はいますか?