これはHibnerate多型質問とデータモデル設計です 質問です。彼らは絡み合っている。私は過去にHibernateを使っていましたが、 を楽しんだことがありますが、時には些細なこと以外にも と考えるのは難しいと感じることがあります。 Hibernateのノックではありません。ただ ORMが一般的に挑戦的であるという観察。Hibernate多型
これはHibernate 101の質問ですが、わかりません。私が達成しようとしていることは、不可能かもしれません。
私はアップル とオレンジにサブクラス化される抽象クラスフルーツを持っています。私はノートやコメントを表すノートクラスを持っています りんごとオレンジについて。アップルまたはオレンジには多くのノート が関連付けられていますが、特定のノートに関連付けられているAppleまたはオレンジは になります。
ここでは、ここではオブジェクトIDの移動先の と、それらを をOrangesと区別するApplesのプロパティを省略しているクラスのスケッチを示します。当分は、私が使用しているHibernateの継承戦略について強く感じることはありません。ここで
abstract public class Fruit {
}
// Apples have notes written about them:
public class Apple extends Fruit {
private Set<Note> note;
...
@OneToMany(cascade = CascadeType.ALL)
public Set<Note> getNote() {
return note;
}
}
// Oranges have notes written about them:
public class Orange extends Fruit {
private Set<Note> note;
...
@OneToMany(cascade = CascadeType.ALL)
public Set<Note> getNote() {
return note;
}
}
我々はそれがAppleとオレンジの両方のフィールドを持っていることがわかり おり、現在実装されているノートクラスです。この設計上の瑕疵または不調和 は、単一のノートインスタンスがAppleまたはOrangeのいずれか1つを指しているだけであり、両方とも決して指していないということです。ノートが Appleにバインドされている場合、オレンジ色のフィールドは不必要で見苦しいものになり、 viceversaとなります。
// A note about an Apple or Orange
public class Note {
private String theNote;
private Apple apple;
private Orange orange;
...
// with the usual many to one mapping
@ManyToOne
@JoinColumn(name = "apple_id")
public Apple getApple() {
return apple;
}
// with the usual many to one mapping
@ManyToOne
@JoinColumn(name = "orange_id")
public Orange getOrange() {
return orange;
}
...
}
しかし、これは私が私が私の のデザインをベースにする考える注クラスがあるが、私は、注釈とテーブルのマッピングを休止状態に関して でこれを考えるするかどうかはわかりません。
// A note about a fruit:
public class Note {
private String theNote;
private Fruit fruit;
...
}
ここで、果物はアップルまたはオレンジのインスタンスになります。
この後者のノートクラスは、実際にAppleまたはOrangeを保持するFruitを参照しても、Hibernate ORMマッピングでも調整できますか?はいの場合、誰かがどのように話してもらえますか?
私のコードがMySQLデータベースで実行されているため、同様の問題があります。あなたは私の関連する質問で私を助けてくれるのですか?ここにリンクがあります:http://stackoverflow.com/questions/25252541/generatedvalue-for-a-java-abstract-superclass-over-mysql – CodeMed