問題タブ [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.
java - Ebean:奇妙な結果
これは私のトピックのデータメンバーです:
postgresqlにbigint(フォーラムクラスのID)として保存されたフォーラム属性
これは私のトピックのファインダーです:
今、私はFinderを使用して最も簡単なことを試みています。フォーラムIDでトピックを取得します。
私は多くのバリエーションを試しましたが、これはそのうちの1つです。
間違った結果が出ます。私は何か間違ったことをしなければなりませんが、何がわかりません。
playframework - Play 2 でインスタンス レベルのモデルの検証を行うにはどうすればよいですか?
複数のフィールドにまたがる複雑な検証ロジックが必要です。モデルの save() または update() が呼び出されるたびにこれを行う方法はありますか? 現在、ORM として Ebean を使用しています。私が今考えることができる唯一の方法は、次のように save() をオーバーライドすることです。
これを行うためのより標準化された方法はありますか?
java - PlayアプリケーションでEbean/JPAを使用して、OneToOne関係のオブジェクトを削除するにはどうすればよいですか?
私は次のクラスを持っています:
データベースでは、次のようになります。
ここで、コントローラーメソッド(Playに精通している人向け)の1つに、Aのオブジェクトがあり、そのプロパティ「b」をデータベースから削除したいと思います。これもcにカスケードする必要があるため、cも削除されます。これが私の現在のアプローチです。
ただし、これは例外をスローします。
[PersistenceException:エラー実行中のDML bindLog []エラー[親行を削除または更新できません:外部キー制約が失敗します(
databasename
。a
、CONSTRAINTfk_a_payme_4
FOREIGN KEY(b_id
)REFERENCESb
(id
))]]
基本的には、bを削除しようとしているという事実に要約されますが、aはまだ列b_idにbへの外部キー参照を保持しているため、最初にその参照をnullに設定する必要があります。
Javaでは、これは次のように変換されます。
これにより、オブジェクトaのbへの参照がnullに設定され、bオブジェクトが正しく削除されますが、cはデータベースから削除されません。(なぜですか?カスケードプロパティがこれを処理しますが)これを修正するために私が見つけた唯一の方法は、cも明示的に削除することです。
ただし、データベース内の2つの行を削除するためのコードはすでに8行あるため、これについてはあまり満足していません。この図にもっと多くの関係があればもっと多くなるでしょう。
だから私の質問については:
aからbを削除して、aからbへの参照が最初に自動的に削除されるようにするにはどうすればよいですか?また、bを削除するときにcも削除されるようにするにはどうすればよいですか?
前もって感謝します!
編集:これまでの最良のアイデア:ab関係の所有権をbに移動します。
playframework-2.0 - Ebean は Microsoft SQL Server DDL を正しく生成できますか?
Microsoft のドライバーを使用して Windows Azure DB に正常に接続し、一般的に通信は機能しますが、 Ebean によって生成された DDL は、MS の仕様と互換性がないauto_increment
ことがわかりました。identity
nvarchar
ntext
実際、私は現在、Azure のスキーマを手動で管理していますが、それEbean
ができるかどうかに興味がありますか?
java - どうすれば Ebean のリモート パフォーマンスを改善できますか?
(免責事項:これは非常にオープンな質問です。さらに、正解は1つだけではないと思います。とにかく閉じないでください。回答をコミュニティwikiに追加することも検討してください)
Ebean
メインの ORM として使用する Play アプリケーションに取り組んでいます。ローカル サーバーで開発モードにいる間、すべてが非常にうまくいきました。しかし、アプリケーションのターゲット環境は、クラウド + 離れた SQL サーバーです。ターゲット データベースに接続した後、ローカル環境では目に見えない 1 つのことがわかりましEbean
た。それは、手動で記述されたステートメントよりも何倍も長い時間、個別のクエリを実行することです。例:
声明
resultSet
このクエリは、〜 1200 ミリ秒で一連のサブクエリを実行します。
イービーン
同じ操作で約6500 ミリ秒の同じresultSet
Ebean
ニーズを使用します。(モデルには関係がないため、結合はありません):Media
編集: 一般的にすべてのクエリがはるかに高速であるため、ローカル環境の違いはそれほど素晴らしいものではありません。
もちろん、一連のクエリを単一のものに置き換えることができる場所はたくさんありますが、常に可能であるとは限りません。1 回のリクエストで複数の異なるテーブルをクエリする必要がある場合があります。他のケースでは、異なるデータベース間で数千のレコードを 1 つずつ照合する必要があります。
また、たとえば、Page<Media>
クラスが Play のビューに渡されると、そのリストの各項目に対して個別の選択が実行されることがわかりました。この場合getList()
、コントローラーでそれを渡しList<Media>
、通常のタイプのパラメーターを使用してページネーション用の情報を追加するのは簡単ですが...すべてを一度に取得するのはとてもクールでした:)
さて、質問は...
Ebean's
構成を最適化するにはどうすればよいですか?- どのようにクエリを最適化できますか (つまり、
List
の代わりに言及するか、ステートメントを使用して各オブジェクトを個別にフェッチする代わりにPage
使用します)。ほかに何か?find.where().in(..., ...)
for()
- Ebean で私たちを驚かせる可能性があるものは他にありますか (
Page
のアイテムを個別にクエリするなど)?
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 としてリンクされているユーザーのセットを持たせることです。
ebean - クエリで OR を使用する Ebean
ユーザーの電子メールまたは名前が特定の文字列で始まるかどうかを確認するクエリを作成しようとしています。SQLクエリでは、これを使用して記述します
ebean クエリでは、次のようなものを書くことを期待しています。
問題は、 or が式リストではなく式を受け取ることです。これは、私が書いているときに得られるものです
私が理解しているように、次のようなクエリを実行しています。
AND を使用しています。
ebean を使用してそのようなクエリを作成するにはどうすればよいですか?
ありがとう!
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
ありがとうございました
java - Play 2 で複数の eBean データベースを使用できない
Play Framework 2.0.3 を使用して、少し複雑なプロジェクトをセットアップしています。
いくつかのデータベース (既存) にアクセスする必要があり、フレームワークの組み込み機能 (つまり EBean) を使用してアクセスしたいと考えています。
「models」パッケージ内にすべてのモデル クラスを作成し、各クラスをその FQN とともに application.conf 内の対応する EBean プロパティにマップしようとしました。
これはうまくいかないようです:
確認して再確認したところ、構成は問題ありません!
次に、データベース モデル クラスごとに異なる Java パッケージを使用し、それに応じて application.conf にマッピングしようとしました。
これは、データベースから情報を読み取るときは正常に機能しますが、オブジェクトを保存/更新しようとすると、次のようになります。
何か案は?
ありがとう!リカルド
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は私の最後の手段です...
前もって感謝します、
完全なスタック トレース: