2つのテーブル間に1対多のjpa 2.x関係があるかどうかを知りたいと思います。私はこのような何かを探しています: (私は成功せずに同様のシナリオを見つけるためにグーグルで多くのことを検索したい)JPA 2.x単方向1対多リレーション
CUSTOMER
ID NAME RELATEDCOLORS
1 John 10
2 Albert 20
3 Maria 10
4 Smith null
COLORS
ID FATHERID COLOR
1 10 Red
2 10 Green
3 10 Blu
4 20 Cyan
あなたは一人一人が対応する色を持って見ることができるように。したがって、ジョンとマリアの色は赤、緑、青です。アルバートの場合、色はシアン、スミスは色がありません。
私はこのような何か試してみました:iRelatedColors属性は
nullにすることができますので、私は "ロングiRelatedColors" の代わりに "長いiRelatedColors" を使用していた
Customerエンティティ
....
@Id
@Column(name = "ID", nullable = false)
private long iId;
@Column(name = "NAME")
private String iName;
@Column(name = "RELATEDCOLORS", nullable = true)
private Long iRelatedColors;
@JoinColumn(name = "FATHERID",referencedColumnName="RELATEDCOLORS", nullable=true)
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Colors> iColors;
....
注意を色の実体
....
@Id
@Column(name = "ID", nullable = false)
private long iId;
@Column(name = "FATHERID", nullable = false)
private long iFatherId;
@Column(name = "COLOR")
private String iColor;
....
私はIKEが、私は必要なものの色エンティティ
タイプの顧客の属性を持つことです。
顧客をリードすると、私は対応するgetを呼び出したときに、リストのiColorが移入されている必要があり...メソッド
iColorsリストの変更後に顧客を更新する場合(たとえば、新しい色を追加する、または色を削除する場合) 色のエンティティも更新する必要があります。
そして私は私がする場合にのみ必要なものすべてがあります。RELATEDCOLORS列が一意の番号(例:10、20、30,40 ECC)を用いて充填されたCustomerテーブル内
を
CustomerテーブルのRELATEDCOLORS列は常にnullでなくてはなりません.Colorsテーブルに対応するIDがある場合は重要ではありません。 RELATEDCOLORS列にCUSTOMER行の1つにnull値がある場合、実行時にHibernateによってNullPointerExceptionがスローされます。
私があなたに示しているデータを使用してもうまくいかず、わかりません。
ご協力いただきありがとうございます。
あなたがいないので、もし明確に、色にFKを追加しますOneToManyのあなたのマッピングそのようなマッピングを削除し、OneToOne/ManyToOneを置くと、FKはCustomerになります。 –
Customer> Coloursという関係の形式は明らかに@ManyToOneなので、なぜあなたは@OneToManyとしてマップしようとしていますか? –
皆さん、ありがとうございました。 ニール、より具体的にお聞かせください。 テーブルデータからわかるように、Customers> Colorsの関係はOneToManyです。たとえば、Jhonは赤、緑、青の色を持っています ありがとう – gpezzini