問題タブ [mappedsuperclass]

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

java - base=1でマップされたHibernateIndexColumnの値0

Oracleデータベースに対してHibernateAnnotations3.4.0GAおよびHibernateCore3.3.2.GA(現在の安定バージョンとも呼ばれます)を使用しています

base = 1の1対多のマッピングがあり、これは非常に長い間正常に機能しましたが、先週、データベースにインデックス列に値0が含まれているエントリがいくつか見つかり、あらゆる種類の問題が発生しました。

だから私の質問は:それがbase = 1でマップされているときに、1対多の関係のインデックス列に0の値を取得する方法を知っている人はいますか?おそらく、ジェネリックスまたはMappedSuperclassの使用に関連しています。

継承も含まれるため、コードはかなり複雑であることに注意してください。

以下は、クラスの関連する部分です。

実際のクラスはこれらを継承し、型パラメーターの具象クラスを提供します。それらはエンティティとしてマップされます。また、id列とversion列、およびその他の多数の属性と参照を指定しますが、手元のマッピングとは関係ありません。

0 投票する
3 に答える
4583 参照

java - EclipseLink @MappedSuperclass とジェネリック

私の Web アプリには、それ自体と階層的な関係を持ついくつかのドメイン モデル クラスがあります。その一例は、ユーザーの投稿を分類するために使用される階層的なカテゴリ構造です。

これらのクラスの階層的な性質に関連する一般的なロジックがいくつかあります。そこで、ロジックを一般的な @MappedSuperclass アノテーション付きスーパークラスに移動しようとしました。

何かのようなもの :

次にサブクラスは HierarchicalBaseEntity を拡張し、自身をジェネリック型 N として提供します。

Java では、これはすべて非常にきれいに機能します。しかし残念ながら、EclipseLink は一般的な「親」フィールドを好まないようです。

次の例外が発生します。

非エンティティ文字列について不平を言うのはなぜですか?

テストとして、ジェネリックを削除して、親フィールドを次のように定義してみました。

ジェネリックがない場合、EclipseLink は次の例外を与えました。

True HierarchicalBaseEntity どちらの場合もエンティティではなく、@MappedSuperclass .. ですが、ジェネリックなどでこれを行う方法はありますか? サブクラスの 1 つを参照する @MappedSuperclass にフィールドを持つことはできないようです。

0 投票する
4 に答える
6759 参照

java - @MappedSuperclass から継承されたフィールドへのアノテーションの適用

もっている:

@GeneratedValue で継承された ID に注釈を付け、サブクラス内で @Index を使用してフィールドに注釈を付ける方法は?

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

java - Hibernate:論理的に削除されていないオブジェクトのみをフェッチする方法

データベース内のほぼすべてのテーブルには、作成、更新、および削除されたステータス(日付とユーザー名)をログに記録する監査テーブルへのFKがあります。

監査テーブルをAuditingクラスにマップし、次のように使用します。

ご想像のとおり、ほぼすべてのエンティティがBusinessObjectから拡張されています。

すべてのbusinessObjectについて、「auditing.deletedisnull」のみを受け取るという簡単な言い方はありますか。

businessObjectに@Whereと@WhereJoinTableを追加しようとしましたが、期待どおりに機能しないようです。

現在、クエリの1つに対してこれを実行しましたが、これは機能しますが、約150あるため、すべてのクエリに対してこれを実行するのは嫌です。

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

java - hibernate、@MappedSuperClass からすべてのエンティティを継承

エンティティごとに updateDate、createDate、deleteDate などのフィールドを設定したいので、このプロパティを含む @MappedSuperClass からエンティティを継承すると考えました。

これは良い練習ですか?

このような依頼に対して、どのように取り組んでいますか?

ありがとう。

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

java - スーパークラスメソッドで動作しないHibernateプロキシオブジェクト

Hibernateを使用するWebアプリケーションがあります。コードベースをHibernate3.6(3.3.2から)にアップグレードした後、Hibernateによって生成されたプロキシデータオブジェクトが一部のメソッドに対してのみ正しい値を返すことがわかりました。具体的なデータモデルクラスのメソッドは正常に機能しているようですが、@MappedSuperclass抽象スーパークラスのメソッドは機能していません。

これが私たちが持っているデータモデルです:

これはHibernate3.3.2では問題なく機能しましたが、Hibernate 3.6にアップグレードした後、アプリケーションは失敗しました。次のテストコードは、問題を示しています。

そのコードの出力は次のとおりです。

これらのメソッドのうち4つが誤った結果を返しました:getId()、getVersion()、getLastUpdateDate()、およびgetCreatedDate()が0またはnullを返しました。データベースの実際の行には、ゼロ以外/ヌル以外の値があります。ただし、getName()、getPath()、および最も不思議なことにgetSecurityId()は正常に機能しました。

なぜこれが起こっているのか誰かが説明できますか?マップされたスーパークラスの根本的な問題ですか、それともこれが発生する可能性がある別の理由がありますか?

FormHibernateによって返されるオブジェクトはJavassistプロキシであることに注意してください。デバッガーで表示すると、通常、Form_$$_javassist_15などのようなクラス名が付けられます。


アップデート:

この問題は、JavassistではなくHibernateで発生しているようです。hibernate.propertiesで設定してバイトコード生成をCGLIBに切り替えましたが、CGLIBを配置しhibernate.bytecode.provider=cglibてもまったく同じ誤った結果が得られます(Hibernateによって返されるクラス名がになるためCGLIBが機能していることを確認しましたForm$$EnhancerByCGLIB$$4f3b4523)。

しかし、なぜそれがうまくいかないのかを特定することにはまだ近づいていません。

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

java - @MappedSuperclass と @OneToMany

@OneToManyCountry からスーパークラスPlace( ) への関連付けが必要@MappedSuperclassです。双方向である可能性があります。のようなものが必要です@OneToAny

国:

例外@JoinColunmはありません:

原因: org.hibernate.AnnotationException: @Any には明示的な @JoinColumn が必要です: tour.spring.bc.model.vo.Country.places

テーブル City と Region はテーブル Country (Region.country_id, City.country_id) への外部キーであり、これは問題ありません。しかし、テーブルRegionとCityへのテーブルCountryには外部キーは必要ないので、必要ありません@JoinColum

私に何ができる?

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

java - Hibernate:マップされたスーパークラスの属性をオーバーライドする方法

ジェネリックエンティティ、スーパークラス:

ポジョ:

@ AttributeOverride、@ Id、...のアノテーションを使用しようとしましたが、機能しません。手伝って頂けますか?属性「id」をオーバーライドして、別の列名とシーケンスをpojo/tableで指定したいと思います。それを行うための最良の方法は何ですか?

0 投票する
4 に答える
21056 参照

java - MappedSuperclass-サブクラスのSequenceGeneratorを変更します

HibernateでJPA2を使用していて、エンティティに共通の基本クラスを導入しようとしています。これまでのところ、次のようになります。

ただし、すべてのテーブルに$entityname_seqは、シーケンスジェネレーターとして使用したいシーケンスがあります。サブクラスからそれを設定するにはどうすればよいですか?@GeneratedValueをオーバーライドし、@SequenceGeneratorを使用して新しいSequenceGeneratorを作成する必要があると思います。

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

jpa - ManyToOneを使用したJPAMappedSuperclass

私はある種の典型的な問題に直面しています。オブジェクト間の典型的な1-N関係を想像してみてください。正確には、User(U)とRoom(R):[U] * ---1[R]。

ここで問題が発生します。Roomは、BlueRoom、RedRoomなどの実装を持つ抽象基本クラスである必要があります。ユーザーエンティティ内の関係をどの程度正しく設定しますか?

@MappedSuperclassの代わりにRoomSuperclassで@Entityを使用することでこれを解決できる可能性があることはわかっていますが、それが適切な解決策であるかどうか、またより良い解決策があるかどうかはわかりません。