問題タブ [activejdbc]
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.
activejdbc - ActiveJDBC 使用時の sqlException
ActiveJDBC と Oracle 11g DB を使用しています。saveIt を使用すると、java.sql.Exception が発生します。インスタンスまたはそのリストを取得すると、すべて問題ありません。私は何を間違っていますか?
そして、ここに私のコードがあります:
many-to-many - 多対多リレーションシップの結合テーブルのエントリを削除する
ドキュメントの例を使用すると、結合テーブルを介して接続されている医師と患者がいます。ここで、医師から患者を削除します。これは正常に機能します。つまり、結合テーブルの行が消えます。
データベースから Doctor をリロードせずに残りの (n-1) 人の患者を取得する方法はありますか?
ドクターをリロードせずにこれを行うと、削除されたばかりのエントリが表示されます。また、キャッシュのパージは機能しません。データベースから医者もリロードしたときにのみ、削除されたエントリはなくなりました。これが機能する唯一の方法ですか?
java - ActiveJDBC モデルの構築中に追加操作を行う
私は1つのテーブルを持つデータベースを持っているwords
ので、私Model
のActiveJDBCはWord
.
データベースからの行がWord
モデルにキャストされるとき、いくつかのデータを列挙型にキャストして抽象化を向上させるなど、いくつかの追加操作を実行したいと考えています。
モデルにコンストラクターを追加しました。これは適切に呼び出されますが、データにアクセスしようとするとnull
. Word
クラスは次のとおりです(短縮):
しかし、ログに次のように表示されます。
これらのフィールドの一部を列挙型にキャストし、他の方法で操作して使いやすくする必要があります。
Word
次のような空のクラスのままにしておく必要があります。
別のクラスにコンストラクターでそれを持たせますか? これは、特に次の作業を行う場合に、多くの不必要なクラフトを作成します... ActiveJDBC でオブジェクトを作成List<Word>
する際にデータを操作する最良の方法は何ですか?Model
java - ジェネリックと ActiveJDBC モデルの操作
レコードのリストを Java オブジェクト (つまり、ActiveJDBC モデルを別の Java クラス) に変換しようとしていますが、すべてのモデルに対して同じメソッドを呼び出して、次のようなモデル タイプを渡すことができるようにしたいと考えています。
私は次のように呼びます:
私は得る
の上M.findWith(...)
それを機能させる方法はありますか?
ありがとう!
activejdbc - ActiveJDBC でテーブルを切り捨てる
ActiveJDBC でテーブルを切り捨てる最良の方法は何ですか? Model クラスには deleteAll() しかありません。
だから私はネイティブ SQL クエリを実行する必要があると思いますがBase.exec("TRUNCATE TABLE table1")
、行く方法はありますか?
ありがとう。
activejdbc - forEach/lambda が含まれている場合、ActiveJDBC はモデルを計測しません。
モデル クラスの 1 つがインストルメント化されなくなった理由を調査するのに多くの時間を費やした後、モデルに追加した静的メソッドからの次のコード行が原因であることに気付きました。
なんで?
ありがとう。
activejdbc - ActiveJDBC @BelongsTo JOIN? キャッシュ?
M1.java を含むモデルが
@BelongsTo(foreignKeyName = "m2_id", parent = M2.class)
あり、M1 をロードした後
M2 myM2 = myM1.parent(M2.class)
、M2 オブジェクトを取得するために追加のクエリが作成されるとします (Hibernate FetchType.LAZY に似ています)。最初のクエリで JOIN を強制するにはどうすればよいでしょうか ( M1 オブジェクトをロードします)?
それが不可能な場合、または特定のケースで参加したくない場合、parent(M2.class)
クエリを再実行して M2 をロードするたびに呼び出しますか、それとも最初の「フェッチ」の後に M1 オブジェクトにキャッシュされますか?
ありがとう。
編集:
このページhttp://javalite.io/lazy_and_eagerinclude()
を見つけました。これは、メソッドを使用しない限り、親がキャッシュされないことを説明しています。
問題は、それを使用すると、1 つのクエリで親を選択するためのクエリがログに表示されますが、それらを 1 つずつ再度ロードするための追加のクエリが表示されることです。つまり、O(n+1) ではなく O(2) ではなく、O(n+2) です!
ログ
何が起こっている?