4

次のように、2つのテーブルを作成しようとしています。

MISEエクササイズ(表)


識別名...

2a


MISInteractiveExercise(表)


識別名...

1b


ID が同じであってはなりません。そして、それらは同じベースから継承されます。私のコードは次のとおりです。

@MappedSuperclass  
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class MISExerciseBase {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private Integer id; 

    ...
}

@Entity
public class MISExercise extends MISExerciseBase{
   ...
}

@Entity
public class MISInteractiveExercise extends MISExerciseBase{
   ...
}

残念ながら、MISExercise のテーブルと MISInteractiveExercise のテーブルは同じ ID を持つことができます。グーグルで検索すると、http://openjpa.208410.n2.nabble.com/same-Id-on-mapped-superclass-td2435374.htmlが見つかります。@Kaayanにも同じ問題があるようです。しかし、そのページからヘルプを得ることができません。

そして、@MappedSuperclass ではなく @Entity を使用すれば問題ないようです。しかし、なぜ、そして良い方法は何ですか?

4

2 に答える 2