問題タブ [apache-cayenne]
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.
apache-cayenne - Apache Cayenne で複数列の一意の制約を定義するにはどうすればよいですか?
正規化されたデータベース モデルの設計ではよくあることですが、Apache Cayenne でモデリング UI を介して定義できる、テーブルの自動生成された主キー制約に加えて、複数列の一意の制約を定義したいと考えています。特定の列または列のグループが特定のテーブルに対して一意である必要があることを Cayenne に伝えることはできますか?
EG-次のapp_user
ように定義されたテーブル (postgresql 構文):
id
列は一意である必要があります。
考えられる唯一の方法は、追加の制約を定義するためにデータベースが作成された後に実行する必要がある後処理スクリプトを作成することですが、Cayenne を介したより良い方法があることを願っています。何か不足していますか?
これは、この件に関して私が見つけることができた唯一の関連する議論です: http://markmail.org/message/euetcwcn73tfd45o
jquery - カイエン式への HashMap
オリジナルのカイエン エクスプレッションを持っています
私のコードベースには、上記の式を HashMap に変換する util メソッドがあります。マップを走査して JSON 形式に変換し、その JSON を jquery QueryBuilder にフィードします。UIレイヤーでJSONを変更し、Jacksonを使用してJSONをHashMapに取得します HashMap sysoutは以下のとおりです
HashMap をトラバースして、それを Cayenne Expression に変換する必要があります。
最終結果は
コードを入力してください
java - Apache Cayenne ROP: クライアント接続がタイムアウトしたことを検出する方法はありますか?
Apache Cayenne Remote Object Persistence フレームワークを使用してデータにアクセスして保存するリッチ クライアント アプリケーションがあります。これまでのところ、接続タイムアウトを検出して処理する適切な方法を見つけることができませんでした。MissingSessionException
セッションがタイムアウトした後にアクションが試行されると、クライアントとサーバーの両方でAがスローされますが、クライアント側ではこの例外がキャッチされ、呼び出し元に伝播することなくスタックトレースがコンソールに出力されます。
ユーザーに再接続を促すことができるように、接続が切断されたことを検出する簡単な方法はありますか?
ObjectContext
関連して、接続を再確立できる場合、使用中の既存のクライアントオブジェクトはどうなりますか? PersistentObject
それらのコンテキストで以前に作成されたコミットされていないは永久に失われますか?
編集: これは、 Apache Cayenne ROP サーバーの「リクエストに関連付けられたセッションがありません」と同じ問題ではありません。Tomcat 7 で
Edit2: 私が考えることができる唯一の (ハッキーな) 解決策は、キープアライブ スレッドを実際に実行して、低遅延のクエリを Cayenne に定期的に送信し、ROP セッションをアクティブに保ち、アプリケーション アクティビティを個別に追跡し、ユーザーにパスワードの入力を促すことです。一定時間活動が無かった場合。このようなアプローチで私が目にする問題は、アクティビティが見逃される可能性がある多くの方法があること、アプリケーションが実際にはタイムアウトしていないこと、およびセッションがタイムアウトする必要があるという根本的な問題に実際に対処していないことです。理由。
Edit3: この質問も Cayenne ユーザー リストに送信しました。ディスカッションはこちらでご覧いただけます。
apache-cayenne - Cayenne Expression.fromString は括弧の順序を維持していません
私は文字列を持っています
式に変換した後、括弧の順序が維持されていません
これにより、
論理的には同じ意味かもしれませんが、適切なグループ化を維持するために括弧の順序を維持したいと思います。
式に変換した後、括弧の順序を維持する方法はありますか
java - 方法: PostgreSQL の json および jsonb データ型を使用した Java オブジェクト マッピング
Apache Cayenne を使用して、json および jsonb データ型を持つ PostgreSQL スキーマにマップしようとしました。Apache Cayenne モデラーにはデータ型がなく、「OTHER」に変更されました。SQL を実行してデータベースを再作成すると (最大限の互換性のために必要)、エラーがスローされました。
次に、DataNucleus など、PostgreSQL の json および jsonb データ型にマップする代替手段を探してみましたが、Java ドライバーが PostgreSQL 9.x をサポートしていないことがわかりました。(したがって、DataNucleus JPO は PostgreSQL の json および jsonb タイプをサポートしていないと思います。)
では、PostgreSQL の json および jsonb にマップし、Java ベースのアプリケーションのデータ書き込み/取得と相互運用するためのソリューションは何ですか?
java - Cayenne 4.0 + PostgreSQL 9.4 で PK 生成を管理する方法
私は持っている:
- PostgreSQL 9.4
- アパッチ カイエン 4.0.M3
1 つの最も単純なテーブル「proba」で構成されるスキーマ:
CREATE TABLE proba (id bigint NOT NULL, 値の文字が変化する(255), CONSTRAINT proba_pkey PRIMARY KEY (id) )
シンプルな Main メソッド:
/li>シンプルな cayenne-project.xml:
/li>シンプルな datamap.map.xml (手作り):
/li>
試してみると、次の出力が得られました。
そのため、カイエンは pk_proba という名前のシーケンスを期待しています。なんで?生成するつもりはありませんでした。私のスキーマでも、Cayenne マッピングでも、postgresql シーケンスについて言及しませんでした。
だから、私は2つの質問があります:
- コミット時に特定のエンティティに対して ID が提供されない場合、Cayenne が ID を生成しようとする試みを抑制し、Cayenne を高速で失敗させるにはどうすればよいですか?
- 私のプロジェクトで Cayenne が PK 自動生成を管理する方法をカスタマイズできますか?