私は2つのテーブルを持っています。従業員とユーザー。
従業員には Inheritance(strategy = InheritanceType.JOINED) のアノテーションが付けられます ユーザーには @PrimaryKeyJoinColumn(name = "super_id") のアノテーションが付けられます
User エンティティを使用すれば、すべて問題ありません。
従業員インスタンスを読み込もうとすると、SQL クエリで "Column clazz not found" が発生しました。回避策として、「0 as clazz」のような偽の列を挿入しようとしましたが、列の重複エラーが発生します。とにかく、「from Employee where id=1」のような HQL クエリを使用すると、id=1 でUserインスタンスがロードされます。
Employee エンティティは抽象クラスではないため、hibernate がそれを Employee インスタンスとしてロードすることを願っています。
私のケースを詳細に説明します。私の顧客には多くの従業員がいて、ユーザーとしてシステムを使用できる従業員とそうでない従業員がいます。また、従業員エンティティも拡張する Managers という名前の 3 番目のテーブルがあります。同じ人物が、1 つの ID を持つ従業員、ユーザー、マネージャーになることができます。
Java継承では可能でとても簡単ですが、JPAではそうではありませんか? 間違った継承戦略を使用していますか? どんなアイデアでも大歓迎です。
ありがとう。