問題タブ [hyperjaxb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
165 参照

hibernate - Hyperjaxb3: 列挙要素からルックアップ テーブルを作成する

列挙制約を持つ要素を含む xsd ファイルがあります。

生成された Java クラスのフィールドを、値とCommsAddressTypeを持つ生成された列挙型にしたいと思います。次に、Hibernate に、値との 2 つの行を含むテーブルを含むデータベース スキーマを自動的に生成してもらいたいと考えています。その後、テーブルはこれらを列で簡単に参照できます。EMAILPHONECommsAddressTypeEMAILPHONERequestCommsAddressTypeId

現在、Hyperjaxb3は type のフィールドをRequest持つ私のクラスを生成します:CommsAddressTypeString

Requestまた、テーブルCommsAddressTypeに type の列が含まれるようにスキーマが生成されますVARCHAR。これにより、不要な重複データが大量に発生することは明らかです。

私が上で説明したことを達成する方法はありますか?また、xsd を顧客に公開しているため、可能であればスキーマに jaxb または hyperjaxb タグを含めないようにしたいと考えています。

0 投票する
1 に答える
191 参照

maven - 外部 jaxb-Binding による @java.persitence.Entity の name パラメータの編集

次のコンスタレーションがあります: 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 パラメータを編集することです。

のようになります

私の実際のbindings-xjc.xjbは次のようになります

@java.persitence.Entity の name パラメータを編集する方法を知っている人はいますか?

0 投票する
1 に答える
127 参照

spring - hyperjaxb で生成されたクラスと apache cxf で生成されたクラスの間のあいまいさを取り除きます

次のプロジェクト構造があります。

サービス親

|__サービススキーマ

|__サービスデータベース

|__サービス契約

|__サービス実装

最終的に、Web サービスを介して渡されるオブジェクトが最終的にデータベースに格納される必要があるため (変換は必要ありません)、hyperjaxb3 を使用しています。

モジュールservice-schemasで、Web サービスで使用する XSD スキーマを定義しました。service-databaseは、hyperjaxb3 を使用して JPA-JAXB オブジェクトを生成します。service-contractは、cxf-codegen-plugin Maven プラグインを使用して Java サービス インターフェイスを生成します。service-implementationが最終的な Web サービスの実装になります。考え方はOKだと思います。ただし、 baseCustomClassを拡張するには JPA クラス (hyperjaxb3 を使用して生成したもの) が必要なため、hyperjaxb3 と cxf-codegen-plugin を使用すると問題が発生します。問題は、たとえば Web サービス メソッドpersitCustom(CustomType)に対してテストを作成すると、XML がCustomTypeに逆シリアル化されることです。cxf-codegen-plugin (サービス インターフェイスの生成に使用したツール) によって生成されます。現在、そのクラスは、hyperjaxb3 によって生成された CustomType と正確には一致しません(コンパイル時には問題はありませんが、両方のクラスが「ほぼ」同じ、同じプロパティ、同じパッケージなどであるためです...) 問題は、どのように行うかですサービスの実装に、cxf-codegen-pluginで生成されたクラスではなく、hyperjaxb3 で生成されたクラスを使用するように強制しています。

これらは私が使用しているバージョンです

これは cxf-codegen-plugin 用です

0 投票する
1 に答える
2040 参照

jaxb - HyperJaxb3 プロジェクトで何が起こっていますか?

Hyperjaxb3 ライブラリが私のプロジェクトに非常に役立つことを理解しており、複数のサイトでいくつかの説明を読み、Spring-Hibernate プロジェクトに組み込むことにしました。

https://jaxb.java.net/でHyperjaxb3 への参照を見つけました。これはかなり公式に見えますが、ハイパーリンク ( http://confluence.highsource.org/display/HJ3/Home ) が開きません。

古い POM の例をいくつか見つけてプロジェクトに含め、古いバージョンの参照のいくつかを見つけて削除しようとしましたが、現在、古い Hibernate バージョンへの依存関係にぶつかっているようです。エラーは次のようになりますこれ:

java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: プロバイダー org.jvnet.hyperjaxb3.hibernate.plugin.HibernatePlugin をインスタンス化できませんでした: java.lang.NoClassDefFoundError: org/hibernate/type/MutableType

もっと良い Maven エントリがあるかどうか、プロジェクトが生きているかどうか、そして最新の Hibernate でどのように使用するかを考えています。

これは、Hyperjaxb3 に関する私の pom の抜粋です。ここでは、一部の古いリンクを除外し、他の依存関係の最新バージョンを指定しています。

私は現在、注釈付きの Hibernate エンティティ クラスを生成しようとはしていませんが、PurchaseOdrer の例から POJO を生成しようとしています。これは私が現在行っていることです:

0 投票する
1 に答える
538 参照

hibernate - Hyperjaxb3 で UUID 生成された Id フィールドを指定する

xsd スキーマからクラスを生成しています。

オブジェクト識別子がプログラムで生成された UUID であることを伝える方法がわかりません。私のエラーは次のとおりです。

Hibernate: select nextval ('hibernate_sequence') org.hibernate.id.IdentifierGenerationException: save() を呼び出す前に、このクラスの ID を手動で割り当てる必要があります: com.vsetec.collect.app.generated.Balance

私のコードは次のとおりです。

upd start これにより、私の Java で次のように生成されます。

追加すると

、「uuidという名前のジェネレーターはありません」のようなものがあります

追加すると

、実際には何も追加されず、UUIDジェネレーターなどを追加するための注釈はありません。「uuid」部分文字列を検索したので、わかりました。上記のエラーが残ります。

Hibernate で識別子を UUID として生成するようにしたいと考えています。ドキュメントは、次のような注釈で達成されると言います:

ドキュメントは次のとおりです。

http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#identifiers-generators-uuid

UUID タイプのフィールドに注釈を付ける方法について説明します。Jaxb で UUID フィールドをマップする方法に関する別の質問層だと思うので、たとえば、最初に 16 進文字列としてマップしようとします。しかし、この問題に対する実用的な解決策があれば、それは誰にとっても役に立ちます。

アップエンド

以前はHBMで次のようにしました:

更新

この xml マッピングが対応する注釈はわかりませんが、うまくいきました。UUID ジェネレーターを String フィールドにアタッチしているようです。「動的マップ」を使用したため、クラス定義が何であったかはわかりません。私の仕事は、HBM と動的マップから Hyperjaxb と生成されたクラスに切り替えることだけです。

ANSWER (あいまいな rtfm スタイルのヒントではなく、回答の形で)

uuidString の長さは 36 文字にする必要があります

ps。大量の挿入にはまだ問題があります (uuid の重複が疑われますが、まだわかりません

0 投票する
0 に答える
232 参照

java - Hyperjaxb: 日付リストの XMLGregorianCalendar から java.util.Date へ

XmlGregorianCalendar を Date に置き換える方法のソリューションを実装しましたか? 残念ながら、日付のリストでは機能しません。私のXSDには

<xs:element name="Attribute1" type="xs:date" minOccurs="0">

Attribute2 は日付のリストです。この属性を持つエンティティをロードすると、java.lang.ClassCastException: org.hibernate.collection.internal.PersistentList incompatible with java.util.Dateが発生します。

問題は、Hyperjaxbがアダプターのみを作成することだと思います

たぶん、HyperjaxbもList<Date>同様のアダプターを作成する必要がありますpublic class Adapter3 extends XmlAdapter<List<String>, List<Date>>

誰かがこれに対する解決策を持っていますか?

よろしくエルゼン

PS: java.util.Date と XMLGregorianCalendar 間の単純な変換java.util.Date から XMLGregorianCalendarJAX-WS と Joda-Timeの質問は既に見ました。しかし、それらは私の問題には当てはまりません。