問題タブ [cassandra-driver]
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.
node.js - Cassandra はスキーマレスですか?
NodeJS アプリケーションを使用して、 cassandra-driverを使用して Cassandra に接続しています
cassandra-driver をいじってみると、事前に各テーブルのスキーマを定義していることに気付きました。すべてのテーブルのスキーマを事前に Cassandra で定義する必要があるかどうかを理解してくれる人はいますか?
nodeJS アプリケーションから Cassandra DB に接続しようとしている方法は次のとおりです。
上記の nodeJS スクリプトを実行する前に、次の cql コマンドを使用して「testdb」キースペースと「testtable」テーブルを作成しました。
java - Datastax Java ドライバー 4 での厳密な列チェックにより問題が発生する
以下はエンティティクラスです
直面する問題は、計算フィールド (上記の場合は writetime(person_name) ) がクエリの一部として選択されていない場合、マッピングが失敗することです。
3.x ドライバー: ResultSet に存在しないマップされたフィールドは無視されました。リンク
4.x ドライバーの場合: 各エンティティ フィールドについて、データベース テーブルまたは UDT には、対応する名前の列が含まれている必要があります。リンク
この計算フィールドを必要に応じてクエリの一部にすることができ、IllegalArgumentException をスローすることなくマッピングが正常に行われる解決策/回避策を提案してください。
編集:
科学者テーブル スキーマ
以下は、試したクエリです。
@GetEntity を使用した結果セットのマッピングは、次のエラーで失敗します。
CassandraIOTest_ScientistHelper__MapperGenerated の get メソッド:
また、ドキュメントでは、計算された値に getter および setter メソッドを追加するかどうかを指定していません。したがって、それらはエンティティクラスから削除されます