私はJPAの初心者です。Person というスーパークラスと、Teacher と Student という 2 つのサブクラスがあります。ほとんどの場合、Person は単なる Teacher または Student ですが、1 人の Person が Student と Teacher の両方である場合があり、それを維持する必要があります。JPAでこのUML継承の重複をどのようにマッピングできるか知っている人はいますか? 出来ますか?
質問する
747 次
1 に答える
0
考え方を変えた方がいいと思いますが、継承を考えさせる「is A」ではなく、複数の役割を持った人として考えればいいので、このように考えれば解決できると思います。次のように、集計を使用して
public class Person {
private TeacherProfile teacherProfile;
private StudentProfile studentProfile;
}
そして、それはあなたに美しい変化をもたらします:
public class Person {
private Set<Profile> profiles;
}
以下のクラスで
public abstract class Profile {
private String name;
//common data
}
public class TeacherProfile extends Profile {
//teacher data
}
public class StudentProfile extends Profile {
//student data
}
これにより、継承のアイデアを壊すことなく、問題をエレガントに解決できます。
リレーショナルデータベースでは可能ですが、オブジェクトの世界では不可能な理由を説明できます.IDでPersonを取得することを検討してください.2つの「役割」を持つ同じ人物がいた場合、どのインスタンスが休止状態になりますか戻る?学生は間違っているだろうし、教師は間違っているだろう. これは、Javaが多重継承言語であり、独自の問題がある場合に可能です:)
私があなたにそれを明確にしたことを願っています。
于 2012-05-07T01:57:26.320 に答える