問題タブ [ibatis]
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 - iBatisによる親子関係のマッピング
私は古典的なセットアップを持っています
iBatis (バージョン 2.30 ... 聞かないでください) を使用して、これを通常のテーブル設定にマッピングしようとしています。
私のマッピングファイルは次のようになります
最初に通常のことを行うとsqlMap.queryForObject("loadParent", new Integer(42))
、セッター内で NullPointerException が発生し、setChildren
明らかに null 引数で呼び出されます (私の悪いことです)。セッターの修正はすべて正常に機能しますが、ログsetChildren
は単一の SQL ステートメントを実行する前に 1 回だけ呼び出され、引数が null であることを示しているため、ここで何が起こっているのか疑問に思っています。誰にも手がかりはありますか?
java - iBatis は私のテーブルに主キーを強制しますか?
私はレガシープロジェクトに取り組んでいます。データベースの設計が不十分です。今すぐDB層を変更したい。最初に頭に浮かんだのはhibernateですが、休止状態にはテーブルに主キーが必要です。実際、私のテーブルのいくつかには主キーがありません。だから私はグーグル検索を行い、 iBatisを見つけました。それはそれでとても良い音です。しかし、 iBatisがテーブルに主キーを強制するかどうかはわかりません。
ありがとう。
java - iBATISによってPOJOに戻されたストアドプロシージャの出力パラメータ
iBATISを使用してMSSQLServerのストアドプロシージャを呼び出しています。入力パラメーターは、マップに配置されるPOJOのプロパティです。
すべてのパラメータはプロシージャへの入力として正しく設定されているため、問題はありません。しかし、パラメーターの1つは出力パラメーターであり、POJOに戻されることを期待していましたが、代わりに1つの追加"obj.new"=false
のマッピングがiBATISによってマップに配置されます。これは、基本的な考え方を示すマッピングの簡略化されたバージョンです。
プロシージャを呼び出した後、Mapに2つのマッピングがiBATISに渡されました。
"obj"=POJO
"obj.new"=False
これで、iBatisのドキュメントに「ストアドプロシージャを実行すると、iBATISはOUTPUTパラメータのオブジェクトを作成する」と記載されていることがわかります。これは理にかなっています。しかし、私の質問は、プロシージャが呼び出された後、iBATISにブール値をPOJOに戻すように指示する方法があるかどうかです。マップから値を取得して自分でPOJOに設定するという余分な作業はしません。
//Uhlén
sql - ibatis/Oracle-INSERT内のSELECTクエリが失敗している
iBatisを使用して挿入操作を実行しようとしています。
内部選択クエリは常に失敗し、NULLを返します。ただし、内部クエリでのみ#field2#を実際の値に置き換えると、正常に機能します。なぜiBatisは内部クエリのフィールド値を置き換えないのですか?
何か案は?
configuration - log4j が期待どおりに動作しないのはなぜですか?
log4j を次のように動作させようとしている同僚がいます。
- 標準出力に記録
- デフォルトでは、ほとんどの出力を無効にします
- debug レベル以上の java.sql.PrepareStatement からのメッセージのみを表示する
彼は「レベル」対「優先度」に巻き込まれています。彼の設定ファイルは次のとおりです。
示されているように、より単純な構成 (ルート ログ レベル = ERROR):
ルート ログ レベルをデバッグに変更した構成 (クエリを … に置き換えます)
期待どおりに動作させるには、log4j.xml 構成ファイルをどのように変更する必要がありますか?
java - NULL は SQL の delete ステートメント (Derby の場合) で許可されていませんか?
次のクエリが Derby で失敗する理由を知っている人はいますか?
次のエラーが表示されます。
SQLは、iBatis ORMレイヤー構成に書き込んだSQLに基づいてJavaプログラムで生成されています。準備されたステートメントは次のとおりです。
ご覧のとおり、私が言おうとしているのは、パラメーターが null でない場合、列の値をパラメーターに対してテストするということです。
java - Guice + クォーツ + iBatis
Guice (Java)、Quartz スケジューラ、および iBatis ( iBaGuice ) を結び付けて、次のことを実行しようとしています。
- を使用してコマンド ライン ユーティリティ スキャナーを起動します
main()
- フォーマットされた出力 (XML または YAML) を含むファイルのディレクトリ (引数として指定) を定期的にスキャンします
- ファイルが検出されると、解析して結果をデータベースに出力します
問題点:
- この例を使用して、Guice と Quartz を接続しました。ただし、コメントで質問している重要な詳細がいくつか欠けていますが、投稿はやや古いため、ここでも引用しています。
- スケジューラの設定方法は明らかではありません。をどこにどのように配線しますか
Trigger
(使用できますTrigger#makeMinutelyTrigger
)?- 私が実際に実行するジョブのタイプは 1 つだけです。JobFactory#newJob の詳細は
TriggerFiredBundle
パラメーターから来ていることは理解していますが、どこにどのように配線すればよいですか? そして、具体的なジョブをどこで/どのように作成または配線しますか?
PSScheduleProviderを作成して配線することで、もう少し先に進みました。今、この次のスニペットでジョブを実際にスケジュールする方法に行き詰まっています。私のJobFactory#newJob
メソッドが呼び出されていないようです
}
java - 同じアプリケーションで Hibernate と Ibatis を使用する
新しいアプリを作成する必要がありますが、他の 2 つのアプリのデータ アクセス ロジックを使用しています。1 つは Hibernate を使用し、もう 1 つは iBATIS を使用します。同じアプリで Hibernate と iBATIS の両方を使用できますか? どのように?。
更新:質問を再構成させてください。いくつかの DAO やドメイン クラスを再利用することを忘れないようにしましょう。同じアプリ、Hibernate と iBATIS で使用する必要があります。どうやってやるの?御時間ありがとうございます...
java - Spring と IBATIS で特定のクエリに異なるデータソースを使用する
クエリの種類に応じて、複数 (この場合は 2 つ) のデータソースを使用するようにアプリを更新する必要があります。たとえば、読み取り操作には DB1 を使用し、書き込み操作には DB2 を使用します。これにどのようにアプローチしますか?
sybase - 「無効な SQL ステートメントまたは JDBC エスケープ、終了 '}' が見つかりません。」jTDS と Sybase を使用
ibatis 経由でストアド プロシージャを呼び出しています。jconn2.jar (5.5) を使用すると、動作し、動作しました。jtds jar (1.2.5) に交換すると、「無効な SQL ステートメントまたは JDBC エスケープ、終了 '}' が見つかりません」という例外が発生します。
透明性を高めるために、Spring と DBCP を使用しています。明らかに、jTDS での SQL コードの解析は好まれておらず、jconn2 で受け入れられています。このプロジェクトは私たちよりも前からあり、私はもう何年も Sybase を使っていません。
データ内の範囲外の文字は、「-」、「:」、および「.」です。
この問題を回避するには、ストアド プロシージャ呼び出しステートメントでパラメーターをエスケープする必要がありますか? jTDS に設定されていない jconn2 のデフォルト設定はありますか?
ありがとう。