問題タブ [toplink]
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.
java - エンティティが @Entity アノテーションでマークされていても、不明なエンティティ クラスのエラー メッセージが表示される
Netbean6.9.1 と JPA EclipseLink を使用して REST Web アプリを構築しています。
私が直面している問題は、エンティティ クラス MasatoTable が Entity アノテーションでマークされていても、エラーが発生することです:
問題は、NetbeanIDE から GlassFish3 サーバーを再起動すると、しばらくの間動作し、ある時点でエラーが表示され始めることです。以前は Toplink Essential を使用していましたが、問題はありませんでしたが、EclipseLink に変更して persistence.xml を再定義し (以下に示す)、この問題が発生しました。しかし、私が考えることができるコードエラーは見られません..
MasatoTable.java
persistence.xml
同じ問題のように見えますが、そのチケットの解決策は、Eclipselink から Toplink にロールバックすることです。トップリンクにロールバックせずに問題を解決した人はいますか?
ホットデプロイ後の不明なエンティティ Bean クラス: netbeans 6.9 + glassfish 2.1 + eclipselink jpa 2.0
アップデート
このケースに関する私の調査によると、バグは解決され、修正されているように見えますか?
https://bugs.eclipse.org/bugs/show_bug.cgi?id=288141
私は全体を理解するのに十分な知識はありませんが、私が見つけたいくつかの事実があります:
Netbean6.9.1 は EclipseLink 2.0.1 を提供しますが、最新バージョンは 2.2.0 です。
最新バージョンをダウンロードして lib ディレクトリに配置し、再展開しましたが、問題は解決しません。私が間違った方法で物事を行ったかどうかはわかりません。
ジェームズのコメント後の更新
以下は、シングルトン EntityManagerFactory を作成するために使用するクラスと、その使用方法です。
使用方法:
私のコードを見ると、私は思います...私はEntityManagerFactoryを閉じていません(しかし、最終的にEntityManagerを閉じています)
"unknown entity bean class"
また、次のアクションでトピックのエラーが確実に表示されることもわかりました。
Netbean を介して Web アプリをデプロイします (これによりブラウザーが開きます)
Netbean IDE でいくつかのコードを変更して保存します。次に、保存ボタンを押すとすぐにNetbeanが自動再デプロイされます(これは「ホットデプロイ」と呼ばれますか???)
ブラウザーに戻り、EntityManager に関連するデータを追加するなどのアクションを実行します。
ホット デプロイ時にエンティティ マネージャ ファクトリを閉じていないため、エラーが発生したように見えますか? 私は調査しなければなりません。
java - 埋め込み可能クラスの ManyToOne 列
@Embedded
アドレス埋め込み可能を埋め込む ( ) エンティティが 2 つあります。Address クラスには、エンティティ Location を指すプロパティがあります。Address クラスでは、その上@ManyToOne
に@JoinColumn(...)
注釈を付けました。今、私はこのエラーを受け取ります:
例外の説明: テーブル [persons] はこの記述子に存在しません。記述子: RelationalDescriptor(com.wordpress.aiids.voeder.model.Location --> [DatabaseTable(locations)])
@JoinColumn
問題を引き起こすのは注釈です:
埋め込み可能なクラスの完全なコードは次のとおりです。
http://aiids.pastebin.com/G1sijNBL
それらの注釈をそこに置くことで何か間違っているのでしょうか、それともこのエラーの原因は何ですか?
解決!
解決策は、referencedColumnName
「gemeente」ではなく「postcode」であったエンティティ Gemeente の主キーを指す必要があることです。
java - EJB 2.0 および JPA (Toplink) の問題でオブジェクトを保存および更新する
クライアント アプリから、2 つのメソッドを 2 回呼び出すのではなく、1 つの EJB メソッドで store と refresh を呼び出したいと考えています。EJB メソッドを作成し、他の 2 つの EJB メソッドを呼び出すようにしました。これは次のように単純に見えます。
問題は、データを読み取らせない Toplink であり、更新部分で例外がスローされます。
例外 [TOPLINK-7123] 例外の説明: この UnitOfWork で writeChanges() が正常に呼び出されました。コミット プロセスは開始されましたが、まだ終了していないため、現在サポートされている操作は、コミット、commitAndResume、リリース、非オブジェクト レベルのクエリ、または SQLCall の実行のみです。現在、executeQuery(ObjectLevelReadQuery) 操作は許可されていません。
助言がありますか?
編集: メソッドのシグネチャを変更しました。
java - Java Webアプリケーションのキャッシュデータ、データが古くならないように停止する方法!
こんにちは、問題が発生しています。私の (推測している) 永続化レイヤーが結果をキャッシュしているため、アプリケーションの外部からデータベースを更新すると、データが古いままになります。
ただし、半分の時間しかキャッシュしていません。これが理にかなっていることを願っています。
クラスがあります
これで、'provincename' などのクラス オブジェクトへの参照ではないデータを更新すると、そのデータはアプリケーションで問題なく、すぐに更新されます。ただし、「建物」などの内部オブジェクトはそうではなく、アプリを再デプロイするなどのハード リフレッシュを行うと、データが新鮮になります。
私はここのデータベースから私の州を取得します:
では、そのクラスの内部オブジェクト、つまり「建物」「人」も更新するように強制するにはどうすればよいでしょうか。
私の永続層はトップリンクの必需品であり、データが更新されないという以前の問題を修正しました。そして、その最初の投稿はこちらです(別のスタックオーバーフローページです)
助けてくれてありがとう。私の問題を十分に説明したことを願っています
[編集: このフレームワークを使用していない場合と同様に、データベース内のテーブルを結合して新しい変数にデータを再入力する方が簡単ですが、そうではありません]
java - 持続ユニット名を取得する
Javaで持続性ユニットの名前を取得するにはどうすればよいですか? 多くのユニットを含む persistence.xml があるため、EntityManager の作成に使用するユニットを制御したいと考えています。
またはのような方法がありますgetPersistenceName
かsmth
?しばらく検索しましたが、有用なものは見つかりませんでした。
toplink - Toplink 式からの SQL クエリ
oracle.toplink.expressions.ExpressionBuilder を使用して作成された oracle.toplink.expressions.Expression 式オブジェクトがあります。データをフェッチするために最終的に起動される同等のSQLクエリ(従業員empからemp.empname、emp.empIdを選択するなど)を見つけたいと思います。同等のStatement/PreparedStatement、または起動しようとしている生のSQLステートメントを取得するのに役立つものを見つけたいです。
たとえば、以下はトップリンク式です。
そして、同等のSQLクエリを取得したい:
solを取得するAPIがあれば教えてください。DatabaseQuery の実装クラスを試しましたが、これを達成できる方法が見つかりませんでした。
以下は私とのトップリンク式です:
次のようなSQLに相当するものが必要です
ありがとう、アディシア。
jpa - Toplink Essentials での DDL 生成の制御
Toplink Essentials の DDL 生成に問題があります。私は Glassfish 2.1 ベースのアプリケーションを開発しており、永続化のために JPA を使用しています。
クラス A の親エンティティがクラス B の一連のエンティティを所有するオブジェクト グラフがあります。エンティティ B には、継承を使用してモデル化されたいくつかのフレーバーがあります。そのようなフレーバーの 1 つは、他のいくつかの B エンティティをセットにバンドルする複合エンティティ クラス BC です。BC 内のすべてのエンティティ B も、B と同じエンティティ A によって所有されている必要があります。エンティティ A のすべてのエンティティ B が複合 BC の一部である必要はなく、スタンドアロンにすることもできます。
したがって、基本的には次のクラスにマップされます。
Toplink がこのオブジェクト階層の DDL を生成すると、期待どおりにすべての外部キー制約が作成されます。ただし、制約のカスケード ルールは設定されません。
A インスタンスへの参照を介してオブジェクト グラフ全体を削除しようとすると、toplink がデータベースからグラフを正しく削除できない場合があります。含まれている B エンティティを削除する前に、Toplink が BC エンティティを削除すると、「複合」関係の外部キー制約に違反します。
この状況は、生成された DDL を関連する外部キー制約で CASCADE (または SET NULL) に手動で調整することで修正できます。これは、運用環境では問題ありません。ただし、これは、DDL 生成が toplink Essentials によって完全に管理されるインメモリ (Derby) データベースを使用するテスト環境では失敗し、上記の制約違反につながります。
必要なカスケード ルールが Toplink Essentials によって正しく設定されるように、DDL 生成プロセスに影響を与える方法はありますか?
ご協力いただきありがとうございます!
jpa - EJB3.1でのリモートEJBの呼び出し
同じglassfish(3.1最終バージョン)でエンティティBean(JPA 2 / Eclipselink)を返す別のWebアプリケーションからリモートステートレスEJBを呼び出す必要があります。依存関係インジェクション(@EJB)を介してWebアプリケーションでejb参照を取得していますが、エンティティはnullになります。私はそれをグーグルで検索し、それがシリアル化可能な問題である可能性があることを発見しました。どこかでこれを見つけました
TopLinkは、読み込み時にエンティティクラスを変更する(「織り込む」)か、実行時にコレクションアクセスを置き換えて、遅延アクセスまたは変更された関係を検出できるようにします(これがない場合、または実行時にプロキシをサブクラス化または使用することなく、遅延読み込みをサポートする方法はありません)。これは非常に重要なポイントになります:エンティティにアクセスするためにリフレクションを使用するのではなく、そのビジネスメソッドを介してのみ使用する必要があります。織り込まれたエンティティがサーバーでシリアル化され、対応するエンティティが織り込まれていないクライアントで逆シリアル化される場合、値の計算にはクラスフィールドとメソッドが含まれるため、serialVersionUIDは一致しません。
だから私は私のアプリケーションでDTO変換が必要ですか?
jpa - トップリンクバッチ読み取り
トップリンクにhibernate'hibernate.batch_size'のようなプロパティを設定する方法はありますか。これにより、フェッチクエリのパフォーマンスが向上します。
jpa - JPA: 名前の NamedQuery:見つかりません
JPAにはNetbeans 6.9.1とTopLink Essentialsを使用しています。JPA接続に必要な手順を実行しました。
しかし、特定のエンティティで名前付きクエリを実行すると。この例外は常に私に返されます
これはどのように可能で、どうすれば解決できますか?