問題タブ [anorm]
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.
database - Play Scala: anorm と Magic[T] を使用して複数のデータベースにアクセスする方法
Anorm と Magic[T] を使用して Play Scala の 2 つのデータベースにアクセスしたいと考えています (1 つは H2 で、もう 1 つは PostgreSQL)。ただ、設定方法がわかりません...
conf/application.conf で別のデータベース接続を設定できることに気付きました
しかし、どうすれば Magic で使用できますか? (Magic のソースコードを読んだのですが、理解できません... Scala の新入生です)
とにかく、複数のデータベース アクセスが Magic[T] で不可能な場合、anorm でそれを行いたいのですが、どうすれば設定できますか?
java - Scalaはアノームを再生します。返されたデータベースオブジェクト、そのプロパティの値を不合理な方法で取得します
こんにちは私はScalaにかなり慣れていません。
Scalaを学びたい理由は次のとおりです。
- Javaからボイラープレートコードを取り除くため。
- さまざまなパラダイムで遊んでください。
- 新しいことを学ぶ楽しみのためだけに
私は演劇のウェブサイトのチュートリアルに従っています。
チュートリアルコードは次のとおりです。
より深い知識を得るために、私は遊んで例を修正しました。
プレーヤーに事前定義されたIDを与えず、MySqlに割り当てさせることにしました。
MySqlでは、Player idをintとして定義しましたが、Postidをlongとして定義しました。//これは後で変更しますが、この例では重要です。
しかし、私に衝撃を与えたのは、私がそれをした方法です。2行目を見てください。これはまったくエレガントではありません。
さて、私の質問に対して、作成されたプレーヤーからより少ない方法でIDをintとして取得するにはどうすればよいですか?
scala - Anor および enum フィールド
Anorm のケース クラスで enum フィールド (Enumeration から拡張されたクラス) をどのように使用できるのか疑問に思っています。例えば:
そのようなコードを試してみると、「RuntimeException: タイプ models.User に対してサポートされているコンストラクターがありません」というメッセージが表示されます。そのような目的でどの DB フィールド タイプを使用すればよいですか? 運がないので varchar を試しました。
sql - SQL 列が「消える」 - Play フレームワーク
現在、play の yabe チュートリアルの scala バージョンを読んでいます。yabe はさらに別のブログ エンジンの略で、当然、チュートリアルのある時点でデータを保存する必要があります。最初の sql の進化は次のとおりです。
その後、投稿とコメントのテーブルが追加されます。scala 側では、各データベース エントリをケース クラスにマップできます。そのコンパニオン オブジェクトは Magic の特性を拡張し、さまざまなヘルパー関数を実装します。この問題は、Post クラスのコンパニオン オブジェクトからのこのコードによって引き起こされます。SQLクエリを見るだけで済みます:
私はコードが何をするかを理解していますが、自分でこれを思い付くことは決してなかったことを認めます.
コードをテストするために、次のテストが実行されます。
このテストは問題なく終了します。Scala の構文は多少複雑になりますが、id を持つユーザーのテスト クエリが 1 に等しいことが明確にわかります。このテストで問題が発生します。
テストは次のエラー メッセージで失敗します。
ColumnNotFound(User.id) /test/Tests.scala の 41 行目: val posts = Post.allWithAuthor
どうすれば列IDがそのように消えるのですか? SQL や Scala のコードは何も変更していません。テストを交換するだけで、エラーのオンとオフが「切り替わり」ます。どういうわけかこのSQLコード
このscala/sqlコード中にIDが見つかりません
します。
何がうまくいかなかったのか説明できますか? チュートリアルへのリンクは次のとおりですhttp://scala.playframework.org/documentation/scala-0.9.1/guide1
アップデート:
この質問を読みました: Play scala の Magic での ColumnNotFound 問題
コメントに続いて、クエリを編集しました。SQL自体は変更されていませんが、すべてを1行に貼り付けました。
それは奇跡です。今、コラムが見つかりました。クエリが 1 行よりも長い場合、テストは奇妙な ColumnNotFoundError で不平を言いますが、ワンライナーではすべて問題ありません。
このようなことがどうして起こるのでしょうか?
playframework - play2 の anorm の結果パーサーを理解するには?
これは、play2 のビルトインの zentasks のサンプル コードです。
フィールド キーに注意してください: project.id
、project.folder
、project.name
。
そのproject
部分はどういう意味ですか?それはどこから来たのですか?
クエリ メソッドを見てください。
SQL は ですselect * from project ...
。結果は次のようになります。
いいえ:
キーを直接project.???
ではなくとして指定する必要があるのはなぜですか?field name
play2 はどのようにパーツを使用しproject.
ますか?
sql - Play Scala Anorm パーサーは、パーサーがオプションとしてマークされている場合でも UnexpectedNullableFound をスローします
テーブルは次のように定義されます。
そして、私のクエリは次のようになります。
Option[String]
これにより、コンパイル時に正しい型 ( ) が得られますがRuntimeException(UnexpectedNullableFound(SESSION.SOMETHING))
、実行時に が発生します。
記録のために、私は Play 1.2.4、Play Scala 0.9.1、およびバンドルされている H2 データベースを使用しています。
postgresql - Play2 の anorm が postgresql で動作しない
play2 の anorm の行パーサーは、jdbc ドライバーによって返されるメタ データに依存していることがわかりました。
したがって、play が提供する組み込みのサンプル「zentasks」では、次のようなコードを見つけることができます。
すべてのフィールドにproject.
プレフィックスがあることに注意してください。
h2 データベースではうまく機能しますが、postgresql ではうまく機能しません。portgresql を使用する場合は、次のように記述します。
play の google group でこれを尋ねたところ、Guillaume Bort は次のように述べています。
はい、postgres を使用している場合は、おそらくそれが原因です。postgresql jdbc ドライバーが壊れており、テーブル名を返しません。
postgresql の jdbc ドライバーに本当にこの問題がある場合、anorm に問題があると
思います。join
どの名前がどのテーブルに属しているかを調べます。
だから私はテストを書きます。
1. postgresql でテーブルを作成する
2. anorm モデルの作成
3. scalatest を使用したテストケース
4.出力
「a」には「BBB1/BBB2」という名前が付いていますが、「AAA」ではありません。
次のように接頭辞を付けてパーサーを再定義しようとしました。
ただし、指定されたフィールドが見つからないというエラーが報告されます。
それはanormの大きな問題ですか?それとも何かが恋しいですか?
placeholder - 「?」はどこ?play2のアノームにおけるSQLのプレースホルダー
play2のアノームで次のようなsqlを記述できます。
{xxx}
プレースホルダーとしてformatを使用し、マップを指定します'id->id
。?
play1のようにプレースホルダーとして使用する方法はありますか?
私はそれを次のように書くことができるといいのですが。
この形式は非常に便利な場合があります。
dao - anorm には似たような dao メソッドがたくさんありますよね?
Play2 と anorm を使用しています。anorm の精神は単純な sql を書くことであり、背後に魔法はないと思います。
しかし、似たような dao メソッドをたくさん書いていることがすぐにわかりました。例えば:
メソッドはほぼ同じですが、where
句がわずかに異なります。
だから私は次のようにfindWhere()
メソッドを作成しました:
アクションでそれを呼び出すことができること:
動作しますが、anorm では推奨されていないと思います。
この問題を解決する最善の方法は何ですか?
sql - play2 でログに記録された SQL ステートメントはどこで確認できますか?
にそのような構成があることがわかりましたapplication.conf
:
有効にしましたが、実行された SQL を記録したログ ファイルが見つかりません。
どこでそれを見つけることができますか、または何か見逃していますか?