問題タブ [embeddable]

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 に答える
230 参照

jpa - 複数の ElementCollection で検索を行う方法

次のエンティティがあるとします。

そのため、Subscription は、関心のある 0 個以上の mainCode または otherCode を持つことができます。通過する特定のオブジェクトの mainCode および otherCode を取得できます。コード自体は、単一の String フィールドのみを持つ埋め込み可能です。

「OR」メカニズムを使用してこれらのコレクションを検索する JPA クエリ (または CriteriaBuilder) を作成するにはどうすればよいですか?

基本的に、次のようなクエリを探しています。

このようなことは CriteriaBuilder で実行できますか、それともより明示的なクエリを使用する必要がありますか? もしそうなら、クエリはどのように見えますか?

編集: CriteriaBuilderでこれを試しました:

ただし、これにより、関連する両方のコレクションの内部結合が作成されます。つまり、データベースに mainCode の行があり、otherCode の行がない場合、結果は返されないため、次のクエリが生成されます。

SELECT t0.ID FROM Subscription_OTHERCODES t2, Subscription_MAINCODES t1, subscription t0 WHERE ((t1.CODESYSTEM = ?) AND (t1.CODE = ?)) OR ((t2.CODESYSTEM = ?) AND (t2.CODE = ?))) AND ((t1.subscription = t0.ID) AND (t2.subscription = t0.ID))

そのため、一致する mainCode が見つかったとしても、otherCode がない場合は失敗します。

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

hibernate - Embeddableオブジェクトにwhere句を適用している間、クエリはNullを返します

こんにちは、みんな、

と子供クラス

組み込み可能な複合キーを持つモデルがあります。

これがクエリです。

child.test1 に where 句を配置すると、レコードとして null、null が返されますが、where 句を削除すると、親とうまくマップされます。

私を助けてください。

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

jpa - JPA要素コレクションからの要素の削除

さて、 Branches の Element Collection を持つ Restaurant エンティティがあります。Embeddable オブジェクトには Id がないため、レストランからブランチを削除するにはどうすればよいですか。通常、ブランチがエンティティである場合、私は何をしますか

entityManager.remove(entityManager.getReference(Branch.class, branchId));

しかし、Branch は Embeddable オブジェクト (ID なし) であるため、それを実現する方法がわかりません。いくつかのコード例は高く評価されます。前もって感謝します。

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

jakarta-ee - 双方向の OneToOne 関係を ElementCollection で置き換える方法は?

404 ページの「Java Persistence 2.0、最終リリース」には、次の例があります。

例 3: 埋め込み可能なクラスから別のエンティティへの 1 対 1 の関連付け。

Employee 内に複数の LocationDetails が必要です。

コレクション テーブル EMP_LOCATION 内の埋め込み可能な LocationDetails を指すようにエンティティ ParkingSpot を変更する方法。

する必要があります

@ElementCollection に置き換えられますか?

ありがとう!

0 投票する
2 に答える
6657 参照

doctrine-orm - Doctrine Embeddables の使い方

Symfony 2 プロジェクトで Doctrine 埋め込み可能オブジェクトを使用しようとしています。

埋め込み可能なフィールドPurchaseを持つクラスがあります。price

価格には完全な通貨が必要なので、これら 2 つの値を格納する組み込み可能なクラスを用意しました。

これで、データベースのスキーマは正しく作成されましたが、Purchaseエンティティを永続化すると、次のエラーが発生します。

SQLSTATE[23000]: 整合性制約違反: 1048 列 'price_amount' を null にすることはできません

そして、私はそれを信じています: 私はまだメカニズムがどのように機能するかを理解していません.

「実際の」エンティティ ( Purchase) から値を設定および取得するにはどうすればよいですか?

Money値をオブジェクト (私が使用する値オブジェクト) としてエンティティのメソッドsetPrice()に渡しますPurchaseが、この値はどのように 2 つのプロパティに分割amountcurrencyれ、埋め込み可能なクラスに設定されるのでしょうか?

var_dump( VarDumper の関数dump()を使用して) を実行すると、エンティティが正しい方法で設定されます。

しかし、これらの値は Embeddableに設定されておらず、その理由がわかりません...

また、組み込みクラスの値をハードコーディングしようとしましたが、とにかく機能せず、理由もわかりません:

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

symfony - null 値を許容しないフィールドを持つ null 値を許容する埋め込み値オブジェクト

Doctrine2 でエンティティ "Person" を作成し、それに値オブジェクト (埋め込み可能) である Address エンティティを追加しました。

アドレスなしで人物の作成を許可したいので、埋め込みに「nullable = true」としてタグを付けます。しかし一方で、私の Address エンティティは、存在する場合、少なくともいくつかの情報 (都市、郵便番号など) を含む必要があります。したがって、「nullable = false」属性があります。

埋め込みオブジェクトの「nullable = true」が機能していなかったようです。それが通常のDoctrineの振る舞いかどうか知っていますか? 埋め込み可能なすべての属性を nullable = true にする必要がありますか?

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

maven - db2 jarを使用してmavenビルドプロセスでjunitsを実行する

私はJavaベースのWebアプリケーションに取り組んでおり、Websphere JAX-RS実装、EJBを中間層として、OpenJPAをDAO層として使用し、バックエンドでDB2を使用してデータを永続化しています。また、コード用の junits も作成します。Eclipse ワークスペースで junits を実行し、Bean で依存性注入アノテーションを使用しているため、websphere が提供する軽量の組み込みコンテナー jar を使用して、junit を起動して高速に実行します。次のように、この jar を Java エージェントとして提供します。

ここに画像の説明を入力

DAO 操作のテストで DB2 jar も必要なので、これらの jar を次のように提供します。

ここに画像の説明を入力

そして、ついにjunitを実行できるようになりました。

しかし、junit を個別に実行するときは、このアプローチに従います。今、私はすべてのjunitをmavenビルドプロセス(maven install -e)の一部として実行する予定です。必要な依存関係を次のように提供しました。

しかし、maven ビルドでは、junit が奇妙な問題で失敗します: org.apache.openjpa.persistence.ArgumentException: The type "xyzMyEntity" has not been Enhanced.

あらゆる手段を試しましたが、この問題を解決できませんでした。ここで私を助けてください。

pom.xml:

エラー トレース:

原因: javax.ejb.EJBException: ネストされた例外を参照してください。ネストされた例外: org.apache.openjpa.persistence.ArgumentException: タイプ "class com.test.febe.model.OrgUnit" は拡張されていません。原因: org.apache.openjpa.persistence.ArgumentException: タイプ「クラス com.test.febe.model.OrgUnit」は拡張されていません。org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1827) で org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1801) で org.apache.openjpa.meta.MetaDataRepository.processBuffer (MetaDataRepository.java:825) org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:722) org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:646) org.apache. openjpa.meta.MetaDataRepository.

テストの実行: 2、失敗: 0、エラー: 2、スキップ: 0、経過時間: 8.693 秒 <<< 失敗! - com.test.febe.test.org.OrgUnitTest testGetAllOrgUnits(com.test.febe.test.org.OrgUnitTest) 経過時間: 2.541 秒 <<< エラー! javax.ejb.EJBTransactionRolledbackException: ネストされた例外: javax.ejb.EJBTransactionRolledbackException: ネストされた例外: javax.ejb.EJBException: ネストされた例外を参照してください。ネストされた例外: org.apache.openjpa.persistence.ArgumentException: タイプ "class com.test.febe.model.OrgUnit" は拡張されていません。org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1827) で org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1801) で org.apache.openjpa.meta.MetaDataRepository.processBuffer (MetaDataRepository.java:825) org.apache.openjpa.meta.

testGetOrgUnit(com.test.febe.test.org.OrgUnitTest) 経過時間: 1.904 秒 <<< エラー! javax.ejb.EJBTransactionRolledbackException: ネストされた例外: javax.ejb.EJBTransactionRolledbackException: ネストされた例外: javax.ejb.EJBException: ネストされた例外を参照してください。ネストされた例外: org.apache.openjpa.persistence.ArgumentException: タイプ "class com.test.febe.model.OrgUnit" は拡張されていません。org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1827) で org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1801) で org.apache.openjpa.meta.MetaDataRepository.processBuffer (MetaDataRepository.java:825) org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:722) org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java: