私のアプリケーションにはユーザーがいます - 多くのタイプのユーザーです。私はそれらのような階層を持っています
User
Worker extends User
Director extends Worker
Manager extends User
それらはさまざまな機能、データなどを持っていますが、それらはすべて一流の市民です。ユーザーはログインできます - パスワード、ユーザー名などのフィールド。
今、私はこの構造をデータベースでモデル化しようとしています - あるいはむしろ、この問題に対する最善の解決策を見つけようとしています. 私は PostgreSQL (テーブルの継承) を使用したため、私にとって最も明確な解決策ですが、これは Hibernate ではまったくサポートされていません。Grails のオプションは - 階層ごとのテーブル - 私は多くの理由で嫌いです (null 不可の列もその 1 つです) またはクラスごとのテーブルです。これはうまくいくかもしれませんが、生成されたテーブルには非常に重要なものの 1 つである外部キーが欠けていることがわかりました。ユーザーテーブルがあるとしましょう。それは問題ありません。独自のシーケンスを使用します。ワーカー クラスのフィールドを持ち、その ID でユーザーを参照するワーカー テーブルがあります。技術的に言えば、アプリケーションでマッピングするときにワーカー クラスを構築する 2 つのレコードがあります。ワーカーID列がユーザーIDへの外部キーではないことを確認しない限り、これはプレーンSQLに追加するのは簡単で、うまく機能します。Grailsでこれをプログラムで行う方法が見つかりません。
しかし今、私は何かが欠けていて、私の考え全体が間違っている可能性があることに気付きました. 1 対 1 のようなマッピングの使用が受け入れられないことは確かです。