問題タブ [jooq]
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.
hibernate - ResultSetのオブジェクトをHibernateエンティティBeanに変換する方法
私はプロジェクトを持っています。このプロジェクトの開始時に、永続性にJDBCではなくHibernateを選択しましたが、Hibernateがこのアプリケーションのすべてのケースに適用できるわけではないことがわかったため、Hibernateが永続化できないこれらのケースではJDBCを使用する必要があります。申請する。最後に、JDBCの代わりにjooqを選択します。したがって、このアプリケーションには2種類の永続性テクノロジー、つまりHibernate&Jooqがあります。ここで、jooqによって作成されたResultSetをHibernateEntityBeansに変換します。Hibernateに関するリソースを検索しましたが、何も見つかりませんでした。HibernateにはそのためのAPIがないようです。
だから、私はいくつかの質問があります!
- Hibernateの現在のコンテキストを取得するにはどうすればよいですか?
- このコンテキスト(質問1で説明)を使用して、ResultSetのオブジェクトをHibernate Entity Beanに変換するにはどうすればよいですか?
皆さんありがとう。
java - jooq startup:クラスを生成するコマンドライン
MacOSで使用するためにこのコマンドラインを変更するのを手伝ってもらえますか?jarファイルはデスクトップにあります。
java -classpath jooq-2.0.0.jar; jooq-meta-2.0.0.jar;jooq-codegen-2.0.0.jar;mysql-connector-java-5.1.18-bin.jar;。org.jooq.util.GenerationTool /guestbook.xml
ありがとうございました。F。
アップデート:
わかりました、これは完全な行と私が得たエラーです。リストされているすべてのjarファイルがフォルダーにあります。
java -classpath〜/ Desktop / JOOQ / jooq-2.1.0.jar:〜/ Desktop / JOOQ / jooq- meta-2.1.0.jar:〜/ Desktop / JOOQ / jooq-codegen-2.1.0.jar:〜 /Desktop/JOOQ/mysql-connector-java-5.1.15-bin.jar:。org.jooq.util.GenerationTool /bookstore.xml
スレッド「main」の例外java.lang.NoClassDefFoundError:org / jooq / util / GenerationTool原因:java.lang.ClassNotFoundException:org.jooq.util.GenerationTool at java.net.URLClassLoader $ 1.run(URLClassLoader.java:202 )at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:190)at java.lang.ClassLoader.loadClass(ClassLoader.java:306)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
更新2
パスを変更して〜/を削除すると、次のようになります。
java -classpath /Users/fabio/Desktop/JOOQ/jooq-2.1.0.jar:/Users/fabio/Desktop/JOOQ/jooq-meta-2.1.0.jar:/Users/fabio/Desktop/JOOQ/jooq- codegen-2.1.0.jar:/Users/fabio/Desktop/JOOQ/mysql-connector-java-5.1.15-bin.jar org.jooq.util.GenerationTool /Users/fabio/Desktop/JOOQ/bookstore.xml
別のエラーが発生しました:
2012年4月1日17:19:52org.jooq.tools.JooqLoggerエラー重大:/Users/fabio/Desktop/JOOQ/bookstore.xmlが見つかりません2012年4月1日17:19:52org.jooq.tools。 JooqLoggerエラー重大:-----------
2012年4月1日17:19:52org.jooq.tools.JooqLoggerエラー重大:クラスパス上にあり、クラスパスの場所として修飾されていることを確認してください。2012年4月1日17:19:52org.jooq.tools.JooqLoggerエラー重大:現在の作業ディレクトリにある場合は、パスに「/」を追加してみてください2012年4月1日17:19:52 org .jooq.tools.JooqLoggerエラー重大:使用法:GenerationTool
java - Jooq - 重複を無視
現在、プロジェクトに Jooq を使用していますが、挿入時に重複キーを無視する方法が必要です。
テーブルに書き込みたいオブジェクトの配列がありますが、それらが既に存在する場合は、START_TS と EVENT_TYPE の複合一意インデックスによって決定され、挿入がサイレントに失敗するようにします。
私のコードは次のようになります。
このようなソリューションが理想的です: https://stackoverflow.com/a/4920619/416338
次のようなものを追加する必要があると思います:
しかし、何を追加しても、重複でエラーが発生するようです。
java - ORM POJO ドメイン モデル クラスが多すぎると、Java PermGen Space にどのような影響がありますか? 利用可能な指標はありますか?
Hibernate などのように JPA/ORM を使用する場合、Java Bean / POJO を定義して、それぞれの RDBMS テーブルにマップされるエンティティを表すのが一般的です。しかし、私が開発しようとしているプラットフォームでは、200,000 のそのようなエンティティをサポートする必要があります。標準の Spring MVC + Hibernate モデルを使用する必要がある場合、20 万のモデル POJO、20 万の DAO クラス、およびビューで表示可能な形式のデータを含む別の 20 万程度の JavaBean を作成することになる可能性があります。これは、Spring、Hibernate、およびその他の多くのライブラリで必要とされるクラスに加えて、約 600K の Java クラスに相当します。各 POJO モデル クラスに 10 個の String インスタンス変数と、それに対応する getter/setter があるとします。ここで、これらすべてのクラスをロードするために必要な PermGen スペースの量を知りたいと思います。
PermGen スペースのオーバーヘッドを見つける最良の方法は何ですか? クレイジーなアイデアの 1 つは、これらの 200K クラスを生成し、それらをロードし (ただし、それらのインスタンスを作成しないでください)、プロファイラーを実行して「インスタンスのないクラス」メトリックを識別し、permgen サイズを取得する方法をプログラムを作成することです。
実際、フィールド対値マップの java.util.Map だけで必要なことを実行できる、より単純なソリューションも探しています。ここで、フィールドには、RDBMS テーブル/列マッピングに関するメタデータが含まれ、JDBC CRUD ステートメントを生成します (新しいクラスのオーバーヘッドがないJOOQ.org )。
目標は、リフレクションをあまり使用せずにショーを実行し、データを運ぶだけのクラスをロードしすぎることです!!
この問題に関するヘルプは本当に感謝しています。
java - jooq Field<> を名前でインスタンス化する
jOOQ を使用して、一般的なコードで SQL クエリを作成しようとしています。jOOQ を使用してこれらのクエリを実行したり、結果を調べたりすることに興味はありません。また、このコードは汎用的であるため、jOOQ のコード生成は使用できません。
私はこれを理解することができました:
しかし、Factory.field() と from() は、実際のテーブルやフィールド名ではなく一般的な SQL を使用するため、(RenderNameStyle.QUOTED を使用している場合でも) 引用符がなく、SQL インジェクションに対する保護もありません。
それらの名前が何であるかを知っているフィールドまたはテーブルを作成する方法はありますか? 理想的には、jOOQ が "sometable"."somefield" 文字列を作成して、その名前とその親テーブルの両方で Field を指定できます。
java - jOOQコードジェネレーターとMavenでカスタム戦略を使用するにはどうすればよいですか?
jOOQでは、 jOOQコードジェネレーターとMavenおよびカスタムジェネレーター戦略を組み合わせて使用したい場合があります。これはそのように行うことができるように見えます(無関係な部分を除外します):
上記の構成は問題を示しています。jOOQのコードジェネレーターは、ライフサイクルのコンパイル目標の前に行われるMavenライフサイクルの生成目標にフックします。ただし、コード生成には、コンパイル済みのカスタム戦略クラスが必要です。そうでない場合は、を取得しClassNotFoundException
ます。これはMavenでどのように解決できますか?generate
目標を実行する前に単一のクラスをコンパイルできますか?
mysql - 既存のクエリから count() クエリを作成する
編集: jOOQ のバージョン 1.6.8 を使用します。新しいバージョンではこれが機能するはずです(回答を参照)
Jooq
ページング、ソートなどでデータのフェッチを処理するために使用するJava Webアプリケーションのグリッドモデルを作成しています...
最初に select を作成し、factory.select(...)
これ ( SelectConditionStep
) をパラメーターとして gridmodel に渡します。ここで、必要なベースのパラメーターを追加.limit()
し.orderBy()
ます。
しかし、私の問題は、ページの合計を計算するために、結果の合計数 (1 ページだけでなく) も知る必要があることです。だから私の質問は、与えられたからカウントクエリを作成することが何らかの方法で可能かどうかSelectConditionStep
です。
これをカウントクエリのサブクエリとしてラップすることを考えました。何かのようなもの:
(アイデアを示すためだけに、機能しません)
MySQL では、次のようにします。
私が持っている現在のコード:
java - Jooqを使用して、大文字と小文字を区別しない列を照会するにはどうすればよいですか?
私はPostgreSQLでjOOQを使用していますが、私の列では大文字と小文字が区別されることに気づきました。jOOQを使用して、大文字と小文字の区別を無視して、列をクエリする正しい方法が見つかりませんでした。ここを見ると:jOOQ TableFieldメソッド、あることがわかりequalIgnoreCase
ます。しかし、jooqクラス自体には、そのメソッドはありません。
私がここで何を間違えたのか誰か知っていますか?
java - jOOQ が実行する SQL ステートメントを確認するにはどうすればよいでしょうか?
jOOQ を使用して、テーブルとの間でデータのクエリ/挿入/更新を行います。
JOOQ が実行する SQL ステートメントを確認する方法はありますか?