値を使用して型駆動選択のようなものを作成する場合:
これをJavaでオブジェクトごとに保存する最良の方法は何ですか(後でこれをjpaで永続化するため)
また、後でこれをクエリして、平均スコアなどを取得したいと思います(NA値をどうするかについても検討する必要があります)。
これに取り組む方法がわからないので、提案は大歓迎です。
値を使用して型駆動選択のようなものを作成する場合:
これをJavaでオブジェクトごとに保存する最良の方法は何ですか(後でこれをjpaで永続化するため)
また、後でこれをクエリして、平均スコアなどを取得したいと思います(NA値をどうするかについても検討する必要があります)。
これに取り組む方法がわからないので、提案は大歓迎です。
値が数値と N/A だけになる場合は、Perception と Gavin Xiong が提案したようにして、これを NUMBER 列として DB に格納できます。Perception が示唆するように、魔法の値 (-1 のような「標準的な」値であっても) を使用するのではなく、列を null 可能にし、DBNULL を使用して N/A を表します。どちらもJavaコードでこれを表現する方法を扱っていませんでしたが、ほとんどの場合、JavaのnullはデータベースのDBNULLへのより自然なマッピングであると思うので、これをintではなく整数(オブジェクト)として表現します(プリミティブ) with null == DBNULL == N/A、特に理由がない限り。
N/A 値の数式 (AVERAGE など) を処理する方法のエッジ ケースを自分で提起しました。最終的な答えを得るには、これらのケースで目的の動作を定義する必要があります。これらの値を格納する方法を決定することで、数式クエリの複雑さも変わります。Gavin が提案する方法で値を -1 として保存する場合、WHERE 句を使用してクエリを作成し、それらの行を平均値から除外する必要があります (それが望ましい動作である場合)。列を NULLABLE にし、DBNULL を N/A の値として保存すると、無料になります。
1 つの注意: N/A を DBNULL にマップする前に、N/A 以外の数値以外の値を持たないことを十分に確認する必要があります。将来、他の非数値が存在する可能性が高いと思われる場合は、これを別の方法で格納することを真剣に考えます。DBNULL では 1 つの非数値しか表現できないためです。そのパスをたどる必要がある場合は、すべてを VARCHAR として DB に保存し、Java または SQL/JPA にコードを追加して、数値文字列を数値に解析し、数式を動的に実行します。(-1、-2 などの複数のマジック値を使用して実行することもできますが、それらが 2 つ以上あるとすぐにぎこちなくなります。)
それをラジオ ボックスとして、オブジェクトの int プロパティにマップしてみませんか。値の範囲は 0 ~ 10 で、NA は -1 として表すことができます。