問題タブ [scalaquery]
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.
scala - ScalaQueryでタプルではなくクラスオブジェクトを結果として取得する方法は?
Scala と ScalaQuery で最初のプロジェクトを開始しました。これまでのところ、どちらもうまく機能しているように見えますが、私は時々少し問題を抱えています.
タプルの代わりにクラス オブジェクト (この場合は約 12 列のドメイン ケース クラス) を取得する方法を説明してください。以下のクエリはタプルを返しますが、問題は、クエリの各列名を提供せずに、テーブルの約 9 列 (またはすべての列) が必要なことです。ドメイン クラスには既に * がすべての列を定義しているのに、返されるタプル内の位置を把握する代わりに Domain.name、Domain.level を使用できるように、以下のクエリが Domain オブジェクトの代わりにタプルを返すのはなぜでしょうか。
なにか提案を?
ありがとう、パワン
scala - scalaqueryクエリのスーパータイプ
すべてのScalaqueryクエリのスーパータイプは何ですか?
私が理解している限り、Query[Projection[Product]]
それはそうあるべきです、例えば:
だからのためval query: Query[Projection[Product]] = for (all <- Tab) yield all.*
に働く必要がありますTab = new Table[(Int, Int)] {…}
…しかし、どうやら私はscalaの入力がどのように機能するのか理解していません。
私は完全に混乱しているので、何かを逃した場合は、質問してください。
scala - Scalaquery: 「任意の」条件の組み合わせによるフィルタリング
フィルタの任意の長さのリストを で結合したいor
。リストが固定長の場合、次のようになります。
フィルターを結合するのand
は簡単です:
Boolean
s と評価されるものを結合するのor
も簡単です:
アップデート:
filter
私が書いたように、scalaqueryが標準的なものであれば簡単です。残念ながら、scalaquery では、SQL エンジンによるこれらのフィルターの実行しか許可されていません。
だから私の具体的な質問は次のようになります: 文字列タプルのセットがある場合:
2 つの列「t」と「m」を含むクエリ、
次の SQL を表すフィルターを生成するにはどうすればよいですか?
in
…または、このようなタプルでSQL 演算子を使用できますか?
もしそうなら、scalaqueryでそれを行う方法
ハック:
現在、私は次のことを行います:
…しかし、それは耐え難いハックです。
解決
私はステファンのソリューションを次のように実装しました:
sql - ScalaQuery (または他の型安全なもの) を使用してワイド SQL テーブルを操作する
多くのデータベースには多くの列を持つテーブルがありますが、ScalaQuery はタプルを使用してテーブル スキーマを表し、Scala はそのような幅の広いタプルをサポートしていません。ScalaQuery を使用してそのようなテーブルを操作する方法はありますか (生の SQL を実行する方法を除く)? そうでない場合、これをサポートするタイプセーフなクエリ言語は他にありますか?
scala - ScalaQueryの名前付きフィールドを持つ生の結果行?
ScalaQuery では、「生の」結果行を操作するためにこれを行うことができます。
しかし、これは完全に定位置です (r は aPositionedResult
です)。列名を使用して結果を操作する方法はありますか? (例: row.getString("foo"))。
Querulous など、これをサポートする別の DB API を使用することもできますが、タイプ セーフなクエリのために既にコードで ScalaQuery を使用しており、可能であれば 1 つのライブラリだけに固執したいと考えています。
scalaquery - ScalaQueryでPostgresqlスキーマを指定するにはどうすればよいですか?
たとえば、私は試しました:
しかし、それはうまくいきません。
scalaquery - ScalaQuery の query/queryNA は JDBC より数倍遅い?
多くのクエリの次のパフォーマンス テストでは、この時間指定された JDBC コードは 500 ~ 600 ミリ秒かかります。
ただし、ScalaQuery を使用すると、時間は 2 秒を超えます。
サーバーログでデバッグした後、これは PreparedStatements が繰り返し準備され、再利用されていないことが原因であることが判明しました。
実際、これはアプリケーション コードで発生しているパフォーマンスの問題であるため、準備されたステートメントを ScalaQuery で適切に再利用する方法に関して何かが欠けているのか、それとも JDBC にドロップダウンすることが推奨される回避策なのか疑問に思っています。
mysql - 冗長性を最小限に抑えることに関して、MySQLやH2のようなデータベースはどれほど賢いですか?
私はデータベースに不慣れですが、この質問は、データベースがどれほど賢いと期待できるかと関係があります。ここで「データベース」とは、MySQLまたはH2の「ようなもの」を意味します(これら2つが類似しているかどうかは実際にはわかりませんが、人気があるというだけです)。私は実際にScalaQueryを使用しているので、基盤となるデータベースから抽象化します。
タイプ(String、Int)のエントリを含み、Stringエントリに多くの冗長性があるテーブルがあるとします。したがって、私のテーブルは次のようになります。
(アダム、18)(アダム、24)(アダム、34)...続き...(アダム、3492)(ベサニー、4)(ベサニー、45)...続き...(ベサニー、2842)
このテーブルをH2と一緒に保存すると、「Adam」と「Bethany」が何度も繰り返され、ルックアップテーブルを指す列挙に置き換えることができるほど賢くなりますか?それとも、大量のストレージを浪費するのでしょうか。
関連:H2が文字列に関してこの点で賢い場合、それはダブルスでも同じように賢いですか?私のおそらく脳死した初期のテーブルでは、たまたま繰り返しダブルフィールドがたくさんあります。
ありがとう!
database - F#のようにScalaのSIQ(ScalaIntegratedQuery)の「タイププロバイダー」をサポートする計画はありますか?
SIQの現在の状態は、ScalaDays2011でChristopherVogtによって発表されました。クエリがどのように機能し、どのように見えるかが示されましたが、私が覚えている限り、データベース構造をScalaに説明するボイラープレートコードを記述する必要がある場合など、これらのタイプがどのように表されるかについての概念はありませんでした。
F#3.0は型プロバイダー(Don SymeによるPDCトーク:ビデオ; Tomas PetricekによるGOTOコペンハーゲントーク:ビデオ、スライド、ブログ投稿)を追加します。これにより、DB(または別のデータプロバイダー)と言語/型システム。言語はデータベース自体から型プロバイダーを使用して構造情報を直接照会できるためです。
ScalaIntegratedQueryは、ユーザーがボイラープレートコードを自分で作成しなくても、データベースのタイプ/関係をScalaコンパイラーに提供できますか?
scala - スカラクエリは値を取得します
テーブルはほとんどありません。簡単にするために 2 つとしましょう。私はこのようにそれらを作成することができます。
tableA から値 'a' を取得し、tableB から値 'a' を 'a' からの結果内のリストとして取得するクエリを作成します。結果は次のようになります。
これまでのところ、クエリのこのポイントにたどり着きました。
コードをテストしていないため、コードにエラーがある可能性があります。私の問題は、結果からデータを取得できないことです。
質問を理解するには、電車に乗ったり、そのクラスに参加したりしてください。午後 12 時以降の列車を検索し、列車の結果内のリストとして列車名と列車が持つクラスの結果セットが必要です。