問題タブ [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.
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 がない場合は失敗します。
hibernate - Embeddableオブジェクトにwhere句を適用している間、クエリはNullを返します
こんにちは、みんな、
と子供クラス
組み込み可能な複合キーを持つモデルがあります。
これがクエリです。
child.test1 に where 句を配置すると、レコードとして null、null が返されますが、where 句を削除すると、親とうまくマップされます。
私を助けてください。
jpa - JPA要素コレクションからの要素の削除
さて、 Branches の Element Collection を持つ Restaurant エンティティがあります。Embeddable オブジェクトには Id がないため、レストランからブランチを削除するにはどうすればよいですか。通常、ブランチがエンティティである場合、私は何をしますか
entityManager.remove(entityManager.getReference(Branch.class, branchId));
しかし、Branch は Embeddable オブジェクト (ID なし) であるため、それを実現する方法がわかりません。いくつかのコード例は高く評価されます。前もって感謝します。
jakarta-ee - 双方向の OneToOne 関係を ElementCollection で置き換える方法は?
404 ページの「Java Persistence 2.0、最終リリース」には、次の例があります。
例 3: 埋め込み可能なクラスから別のエンティティへの 1 対 1 の関連付け。
Employee 内に複数の LocationDetails が必要です。
コレクション テーブル EMP_LOCATION 内の埋め込み可能な LocationDetails を指すようにエンティティ ParkingSpot を変更する方法。
する必要があります
@ElementCollection に置き換えられますか?
ありがとう!
doctrine-orm - Doctrine Embeddables の使い方
Symfony 2 プロジェクトで Doctrine 埋め込み可能オブジェクトを使用しようとしています。
埋め込み可能なフィールドPurchase
を持つクラスがあります。price
価格には完全な通貨が必要なので、これら 2 つの値を格納する組み込み可能なクラスを用意しました。
これで、データベースのスキーマは正しく作成されましたが、Purchase
エンティティを永続化すると、次のエラーが発生します。
SQLSTATE[23000]: 整合性制約違反: 1048 列 'price_amount' を null にすることはできません
そして、私はそれを信じています: 私はまだメカニズムがどのように機能するかを理解していません.
「実際の」エンティティ ( Purchase
) から値を設定および取得するにはどうすればよいですか?
Money
値をオブジェクト (私が使用する値オブジェクト) としてエンティティのメソッドsetPrice()
に渡しますPurchase
が、この値はどのように 2 つのプロパティに分割amount
さcurrency
れ、埋め込み可能なクラスに設定されるのでしょうか?
var_dump
( VarDumper の関数dump()
を使用して) を実行すると、エンティティが正しい方法で設定されます。
しかし、これらの値は Embeddableに設定されておらず、その理由がわかりません...
また、組み込みクラスの値をハードコーディングしようとしましたが、とにかく機能せず、理由もわかりません:
symfony - null 値を許容しないフィールドを持つ null 値を許容する埋め込み値オブジェクト
Doctrine2 でエンティティ "Person" を作成し、それに値オブジェクト (埋め込み可能) である Address エンティティを追加しました。
アドレスなしで人物の作成を許可したいので、埋め込みに「nullable = true」としてタグを付けます。しかし一方で、私の Address エンティティは、存在する場合、少なくともいくつかの情報 (都市、郵便番号など) を含む必要があります。したがって、「nullable = false」属性があります。
埋め込みオブジェクトの「nullable = true」が機能していなかったようです。それが通常のDoctrineの振る舞いかどうか知っていますか? 埋め込み可能なすべての属性を nullable = true にする必要がありますか?
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: