問題タブ [ebean]

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

playframework - Play 2 でインスタンス レベルのモデルの検証を行うにはどうすればよいですか?

複数のフィールドにまたがる複雑な検証ロジックが必要です。モデルの save() または update() が呼び出されるたびにこれを行う方法はありますか? 現在、ORM として Ebean を使用しています。私が今考えることができる唯一の方法は、次のように save() をオーバーライドすることです。

これを行うためのより標準化された方法はありますか?

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

java - PlayアプリケーションでEbean/JPAを使用して、OneToOne関係のオブジェクトを削除するにはどうすればよいですか?

私は次のクラスを持っています:



データベースでは、次のようになります。

ここで、コントローラーメソッド(Playに精通している人向け)の1つに、Aのオブジェクトがあり、そのプロパティ「b」をデータベースから削除したいと思います。これもcにカスケードする必要があるため、cも削除されます。これが私の現在のアプローチです。

ただし、これは例外をスローします。

[PersistenceException:エラー実行中のDML bindLog []エラー[親行を削除または更新できません:外部キー制約が失敗します(databasenamea、CONSTRAINT fk_a_payme_4FOREIGN KEY(b_id)REFERENCES bid))]]

基本的には、bを削除しようとしているという事実に要約されますが、aはまだ列b_idにbへの外部キー参照を保持しているため、最初にその参照をnullに設定する必要があります。

Javaでは、これは次のように変換されます。

これにより、オブジェクトaのbへの参照がnullに設定され、bオブジェクトが正しく削除されますが、cはデータベースから削除されません。(なぜですか?カスケードプロパティがこれを処理しますが)これを修正するために私が見つけた唯一の方法は、cも明示的に削除することです。

ただし、データベース内の2つの行を削除するためのコードはすでに8行あるため、これについてはあまり満足していません。この図にもっと多くの関係があればもっと多くなるでしょう。

だから私の質問については:

aからbを削除して、aからbへの参照が最初に自動的に削除されるようにするにはどうすればよいですか?また、bを削除するときにcも削除されるようにするにはどうすればよいですか?

前もって感謝します!

編集:これまでの最良のアイデア:ab関係の所有権をbに移動します。

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

playframework-2.0 - Ebean は Microsoft SQL Server DDL を正しく生成できますか?

Microsoft のドライバーを使用して Windows Azure DB に正常に接続し、一般的に通信は機能しますが、 Ebean によって生成された DDL は、MS の仕様と互換性がないauto_incrementことがわかりました。identitynvarcharntext

実際、私は現在、Azure のスキーマを手動で管理していますが、それEbeanができるかどうかに興味がありますか?

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

java - どうすれば Ebean のリモート パフォーマンスを改善できますか?

(免責事項:これは非常にオープンな質問です。さらに、正解は1つだけではないと思います。とにかく閉じないでください。回答をコミュニティwikiに追加することも検討してください)

Ebeanメインの ORM として使用する Play アプリケーションに取り組んでいます。ローカル サーバーで開発モードにいる間、すべてが非常にうまくいきました。しかし、アプリケーションのターゲット環境は、クラウド + 離れた SQL サーバーです。ターゲット データベースに接続した後、ローカル環境では目に見えない 1 つのことがわかりましEbeanた。それは、手動で記述されたステートメントよりも何倍も長い時間、個別のクエリを実行することです。例:

声明

resultSetこのクエリは、〜 1200 ミリ秒で一連のサブクエリを実行します。

イービーン

同じ操作で約6500 ミリ秒の同じresultSet Ebeanニーズを使用します。(モデルには関係がないため、結合はありません):Media

編集: 一般的にすべてのクエリがはるかに高速であるため、ローカル環境の違いはそれほど素晴らしいものではありません。

もちろん、一連のクエリを単一のものに置き換えることができる場所はたくさんありますが、常に可能であるとは限りません。1 回のリクエストで複数の異なるテーブルをクエリする必要がある場合があります。他のケースでは、異なるデータベース間で数千のレコードを 1 つずつ照合する必要があります。

また、たとえば、Page<Media>クラスが Play のビューに渡されると、そのリストの各項目に対して個別の選択が実行されることがわかりました。この場合getList()、コントローラーでそれを渡しList<Media>、通常のタイプのパラメーターを使用してページネーション用の情報を追加するのは簡単ですが...すべてを一度に取得するのはとてもクールでした:)

さて、質問は...

  1. Ebean's構成を最適化するにはどうすればよいですか?
  2. どのようにクエリを最適化できますか (つまり、Listの代わりに言及するか、ステートメントを使用して各オブジェクトを個別にフェッチする代わりにPage使用します)。ほかに何か?find.where().in(..., ...)for()
  3. Ebean で私たちを驚かせる可能性があるものは他にありますか (Pageのアイテムを個別にクエリするなど)?
0 投票する
1 に答える
866 参照

many-to-many - 同じエンティティへの Ebean ManyToMany

私は、すべてのユーザーがユーザーでもある一連の友人を持つ多対多の関係をマッピングしようとしています。データベース テーブルでは、これは user_friend という関連付けテーブルを使用して解決されます。user_friend テーブルには、user1 と user2 の 2 つの列があり、user テーブル内のユーザー ID への外部キーです。

最適な解決策は、user_friend テーブルの Java ebean モデルを作成せず、ユーザー モデルにユーザーのセットを持たせることです。現在のユーザーは、user_friend テーブルの user1 または user2 です。マッピングは、user_friend テーブルの 2 つの列を何らかの方法で参照する必要があります...

これは可能ですか?

編集: SQL for 1.sql を追加

問題は、すべてのユーザー インスタンスに、user1 または user2 としてリンクされているユーザーのセットを持たせることです。

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

ebean - クエリで OR を使用する Ebean

ユーザーの電子メールまたは名前が特定の文字列で始まるかどうかを確認するクエリを作成しようとしています。SQLクエリでは、これを使用して記述します

ebean クエリでは、次のようなものを書くことを期待しています。

問題は、 or が式リストではなく式を受け取ることです。これは、私が書いているときに得られるものです

私が理解しているように、次のようなクエリを実行しています。

AND を使用しています。

ebean を使用してそのようなクエリを作成するにはどうすればよいですか?

ありがとう!

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

java - Play Framework 2.0カスケード削除しようとするとエラーが発生しました"パラメータ"#1 "が設定されていません;SQLステートメント:delete"

私の例の完全なエラー行は、「[PersistenceException:org.h2.jdbc.JdbcSQLException:Parameter "#1" is not set; SQL statement:delete from class4 where(class3_id)in(?)[90012-158]]」です。

これは私の単体テストで発生していたので、それを再現するためのテストプロジェクトを作成することにしました。

基本的に、クラス1〜4があり、それぞれが1対多に関連していて、作成してから1、2、3、4、4、3、2、1の順序で削除しようとしていますが、このエラーが発生します。

クラスは番号を除いてすべて同じです(そして最後のクラスにはリストがありません

エラーの原因となるアプリケーションコードは次のように実行されます

また、それが起こっていることを示すサンプルアプリケーションを添付しました。誰かが私が間違ったことを指摘できれば、または誰かが私がそれを回避する方法を知っていれば、それがAPIのバグであるなら、私は最も素晴らしいでしょう。

http://stowelly.co.uk/play-2.0.3-persistence-test.zip

ありがとうございました

0 投票する
5 に答える
4747 参照

java - Play 2 で複数の eBean データベースを使用できない

Play Framework 2.0.3 を使用して、少し複雑なプロジェクトをセットアップしています。

いくつかのデータベース (既存) にアクセスする必要があり、フレームワークの組み込み機能 (つまり EBean) を使用してアクセスしたいと考えています。

「models」パッケージ内にすべてのモデル クラスを作成し、各クラスをその FQN とともに application.conf 内の対応する EBean プロパティにマップしようとしました。

これはうまくいかないようです:

確認して再確認したところ、構成は問題ありません!

次に、データベース モデル クラスごとに異なる Java パッケージを使用し、それに応じて application.conf にマッピングしようとしました。

これは、データベースから情報を読み取るときは正常に機能しますが、オブジェクトを保存/更新しようとすると、次のようになります。

何か案は?

ありがとう!リカルド

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

playframework - Play フレームワーク: 2.0.2 PersistenceException: Ebean サーバーにクラスを登録できません

まず、この質問はよく似ているように見えるかもしれません: Play Framework: PersistenceException: The type is not a registered entity? (イービーン)でもそうじゃない...

エンティティを保存しようとしていますが、テンプレートをレンダリングすることさえできません。Play を再起動すると、件名にエラーが表示されます。もちろん、アプリはコンパイルされます。

Play で EBean を使用するためのすべての手順を実行しました。

  • @Entity(javax.persistence.Entity)の注釈付きモデル
  • モデルはモデルを拡張します ( play.db.ebean.Model)
  • 私の中でEbeanが有効になっていますapplication.conf ebean.default="models.*"(私のクラスはmodelsパッケージに含まれています)

助言がありますか?私ができるテスト?確認事項 公平を期すために、stackoverflowは私の最後の手段です...

前もって感謝します、

完全なスタック トレース:

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

heroku - Heroku の Play フレームワークで Ebean を使用する

基本的な情報を保存するために、Play Framework 2 で Ebean を使用しています。このアプリケーションは Heroku にプッシュされます。すべて問題ないようです。Ebean で読み書きできますが、数時間後にアプリケーションにアクセスすると、保存されていたものがすべて消えてしまいます。

このソースから、アプリケーションが頻繁にアクセスされない場合は、アプリケーションを起動する必要があることがわかります。つまり、実行中のアプリケーションは、しばらくアイドル状態になるとシャットダウンされますよね?

めったにアクセスされない無料アプリは、起動に数秒 (場合によってはそれ以上) かかります — 久しぶりにアクセスしたときでもアプリをすばやく応答させたい場合は、有料プランにアップグレードしてください

私はこの質問を見つけました Herokuの永続的なファイルシステムはありませんか? これは、heroku に永続的なファイルシステムがないことを説明しています。

したがって、Ebean はファイルシステムにデータを保存します。つまり、Heroku には永続的なファイルシステムがないため、しばらくするとデータが消去されます。

私はHeroku で無料のアプリケーションを使用していることに言及する必要があります。これを解決する方法はありますか?多分私はいくつかの設定が欠けているか、何か...

編集

ファイルに保存されたH2データベースを使用します。